Compare commits

...

81 Commits

Author SHA1 Message Date
164cd8cb3b Automatic commit of package [zabbix-agent-addons] release [0.2.172-1].
Created by command:

/usr/bin/tito tag
2023-12-21 15:58:47 +01:00
ff4a05ae59 Add Zabbix template for storageDevices 2023-12-21 15:58:31 +01:00
c1e46207da Read raw value for SSL_Life_Left 2023-12-21 15:00:07 +01:00
f72910cc6b Read SSD_Life_Left if available 2023-12-21 14:47:28 +01:00
62b8de1b05 /dev/bus/0 might not exist but can be queried 2023-12-21 14:23:58 +01:00
066f622888 Report more info from some NVMe 2023-12-21 14:16:31 +01:00
12c8396be3 Adjust default values for stor dev 2023-12-21 14:09:42 +01:00
f7835e1b90 Fix UserParam 2023-12-20 16:22:15 +01:00
a5ad4081f0 Add new script for smart monitoring 2023-12-20 16:19:21 +01:00
00790af9bf Automatic commit of package [zabbix-agent-addons] release [0.2.171-1].
Created by command:

/usr/bin/tito tag
2023-09-19 12:03:17 +02:00
55c878cf24 Ignore samba NT_STATUS_PROTOCOL_UNREACHABLE errors 2023-09-19 12:03:04 +02:00
2cec18b4a5 Automatic commit of package [zabbix-agent-addons] release [0.2.170-1].
Created by command:

/usr/bin/tito tag
2023-06-29 14:06:00 +02:00
1ddf903568 Typo 2023-06-29 14:04:38 +02:00
e5047e7b92 Fix + discover NMVe 2023-06-29 14:02:30 +02:00
34d19c8622 Automatic commit of package [zabbix-agent-addons] release [0.2.169-1].
Created by command:

/usr/bin/tito tag
2023-06-29 12:12:23 +02:00
2c29e4ecaa Better sensor output parsing 2023-06-29 12:12:07 +02:00
995bd50151 Automatic commit of package [zabbix-agent-addons] release [0.2.168-1].
Created by command:

/usr/bin/tito tag
2023-06-29 11:15:27 +02:00
7b42d3f2a9 Drop ipmitool stderr and simplify output parsing 2023-06-29 11:15:10 +02:00
313e022894 Automatic commit of package [zabbix-agent-addons] release [0.2.167-1].
Created by command:

/usr/bin/tito tag
2023-06-29 09:31:14 +02:00
3159f43ced Fix fan detection on some BMC boards 2023-06-29 09:29:15 +02:00
b0958e6fba Update ZFS template 2022-05-06 17:05:06 +02:00
ed5c8b745f Automatic commit of package [zabbix-agent-addons] release [0.2.166-1].
Created by command:

/usr/bin/tito tag
2022-03-26 18:30:53 +01:00
5acc49a55c Fix counting samba computers auth tries 2022-03-26 18:30:16 +01:00
7cfbd64eb4 Automatic commit of package [zabbix-agent-addons] release [0.2.165-1].
Created by command:

/usr/bin/tito tag
2022-03-21 11:30:00 +01:00
221a0afe5d last_seen might not be defined in check_unifi 2022-03-21 11:29:41 +01:00
e0be2c506f Automatic commit of package [zabbix-agent-addons] release [0.2.164-1].
Created by command:

/usr/bin/tito tag
2022-03-21 10:49:24 +01:00
4e50e2b2d4 Use JSON bool in unifi scripts 2022-03-21 10:48:50 +01:00
f46a580f90 Automatic commit of package [zabbix-agent-addons] release [0.2.163-1].
Created by command:

/usr/bin/tito tag
2022-01-24 11:01:15 +01:00
e0d2825f21 Fix check_zimbra_sudo 2022-01-24 11:01:03 +01:00
56fcaf7f6c Automatic commit of package [zabbix-agent-addons] release [0.2.162-1].
Created by command:

/usr/bin/tito tag
2022-01-21 13:46:24 +01:00
5afabbfaad Add alloc_ct for LVM VG when missing 2022-01-21 13:46:06 +01:00
849170c10b Automatic commit of package [zabbix-agent-addons] release [0.2.161-1].
Created by command:

/usr/bin/tito tag
2022-01-21 12:19:45 +01:00
31ccccd2e0 Fix Zimbra discovery and check scripts 2022-01-21 12:19:29 +01:00
1950abbc0f Automatic commit of package [zabbix-agent-addons] release [0.2.160-1].
Created by command:

/usr/bin/tito tag
2022-01-20 17:28:52 +01:00
51fa9f602a Add a {#DOCKER_CONTAINER_STATUS} LLD macro 2022-01-20 17:28:37 +01:00
607204a150 Automatic commit of package [zabbix-agent-addons] release [0.2.159-1].
Created by command:

/usr/bin/tito tag
2022-01-20 14:55:55 +01:00
5e7e22d311 Update Docker template 2022-01-20 14:55:34 +01:00
80bfaee714 Don't query state in docker discovery
As it's not supported on some older docker, and not used anyway
2022-01-20 14:54:19 +01:00
8140dcb7cf Automatic commit of package [zabbix-agent-addons] release [0.2.158-1].
Created by command:

/usr/bin/tito tag
2022-01-13 13:59:21 +01:00
820d12a682 Small fixes for Docker check script and template 2022-01-13 13:58:58 +01:00
2d88e6fe34 Automatic commit of package [zabbix-agent-addons] release [0.2.157-1].
Created by command:

/usr/bin/tito tag
2022-01-13 09:44:00 +01:00
cd48caa24c Enhacements in the Docker template 2022-01-13 09:43:45 +01:00
7c42540a66 Automatic commit of package [zabbix-agent-addons] release [0.2.156-1].
Created by command:

/usr/bin/tito tag
2022-01-12 16:24:07 +01:00
a24f4adb81 Add Docker scripts 2022-01-12 16:23:50 +01:00
a73021a2d5 Automatic commit of package [zabbix-agent-addons] release [0.2.155-1].
Created by command:

/usr/bin/tito tag
2022-01-11 16:29:51 +01:00
8df27d15d7 Automatic commit of package [zabbix-agent-addons] release [0.2.154-1].
Created by command:

/usr/bin/tito tag
2021-12-16 16:47:35 +01:00
cfdd92b9c6 Fix zpool iostat as /proc/spl/kstat/zfs/pool/io doesn't exist anymore 2021-12-16 16:46:43 +01:00
Daniel Berteaud
72682f9bad Add nodata triggers for Elasticsearch 2021-10-19 14:31:56 +02:00
Daniel Berteaud
1272a06771 Include Zabbix template for Elasticsearch 2021-10-19 10:27:16 +02:00
Daniel Berteaud
c17260c519 Automatic commit of package [zabbix-agent-addons] release [0.2.153-1].
Created by command:

/usr/bin/tito tag
2021-10-19 10:19:04 +02:00
Daniel Berteaud
5387ae53b8 Tweak elasticsearch monitoring scripts 2021-10-19 10:18:44 +02:00
Daniel Berteaud
415c608252 Automatic commit of package [zabbix-agent-addons] release [0.2.152-1].
Created by command:

/usr/bin/tito tag
2021-10-18 12:18:55 +02:00
Daniel Berteaud
9ad6d8b1b3 Small fixes in elasticsearch scripts 2021-10-18 12:18:37 +02:00
Daniel Berteaud
6dc46b819f Automatic commit of package [zabbix-agent-addons] release [0.2.151-1].
Created by command:

/usr/bin/tito tag
2021-10-18 11:35:14 +02:00
Daniel Berteaud
74b3ba5928 Add Elasticsearch monitoring scripts 2021-10-18 11:34:53 +02:00
Daniel Berteaud
ad9b9b569a Updates and fixes in Zabbix templates 2021-09-22 18:06:08 +02:00
Daniel Berteaud
0ac983e410 Automatic commit of package [zabbix-agent-addons] release [0.2.150-1].
Created by command:

/usr/bin/tito tag
2021-07-16 10:15:36 +02:00
Daniel Berteaud
f0e704ce95 Do not count Unconfigured(good) drives as an error 2021-07-16 10:15:01 +02:00
Daniel Berteaud
1f7b7e86d8 Remove duplicated templates 2021-06-24 08:35:37 +02:00
Daniel Berteaud
9eb1706e7d Typo in template filename 2021-06-24 08:30:39 +02:00
Daniel Berteaud
02cec2e7e8 Update and provide more templates 2021-06-19 14:22:10 +02:00
Daniel Berteaud
6b2c293acd Update and add more Zabbix templates 2021-06-19 14:03:49 +02:00
Daniel Berteaud
360895affb Remove health and capacity sanoid checks from discovery
This is handled by check_zfs anyway
2021-06-09 18:22:32 +02:00
Daniel Berteaud
2c0ea77e90 Automatic commit of package [zabbix-agent-addons] release [0.2.149-1].
Created by command:

/usr/bin/tito tag
2021-05-27 19:44:45 +02:00
Daniel Berteaud
ca549543c8 Support Debian lib path for BackupPC 2021-05-27 19:44:26 +02:00
Daniel Berteaud
4a97f44925 Automatic commit of package [zabbix-agent-addons] release [0.2.148-1].
Created by command:

/usr/bin/tito tag
2021-02-17 10:31:59 +01:00
Daniel Berteaud
c1f20d9388 Fix zfs pool monitoring when a pool has errors
We must drop stderr so messages like permissions error getting errors do
not pollute the JSON output
2021-02-17 10:30:59 +01:00
Daniel Berteaud
0a6c9cdd62 Alert only if not samba monitoring for 25min (instead of 15) 2021-01-14 19:29:52 +01:00
Daniel Berteaud
b99e6ca69d Automatic commit of package [zabbix-agent-addons] release [0.2.147-1].
Created by command:

/usr/bin/tito tag
2021-01-14 19:14:10 +01:00
Daniel Berteaud
5ff7e2214c [check_samba_dc_sudo] Fix typo with GPO listing 2021-01-14 19:13:53 +01:00
Daniel Berteaud
91ee1f7648 Automatic commit of package [zabbix-agent-addons] release [0.2.146-1].
Created by command:

/usr/bin/tito tag
2021-01-14 18:55:49 +01:00
Daniel Berteaud
b780d464dd [check_samba_sudo] Update default audit log file path, and drop errors from samba-tool 2021-01-14 18:55:16 +01:00
Daniel Berteaud
0a32289a83 Automatic commit of package [zabbix-agent-addons] release [0.2.145-1].
Created by command:

/usr/bin/tito tag
2021-01-14 16:00:17 +01:00
Daniel Berteaud
a0b003c219 Add perl(File::ReadBackwards) dependency 2021-01-14 15:59:53 +01:00
Daniel Berteaud
b0804d6963 Automatic commit of package [zabbix-agent-addons] release [0.2.144-1].
Created by command:

/usr/bin/tito tag
2021-01-14 15:42:02 +01:00
Daniel Berteaud
acd74aa1db Optimize samba audit_auth log parsing by reading from the tail of the file
GLPI #47700
2021-01-14 15:40:22 +01:00
Daniel Berteaud
d0ee0ee54c Automatic commit of package [zabbix-agent-addons] release [0.2.143-1].
Created by command:

/usr/bin/tito tag
2021-01-13 19:31:38 +01:00
Daniel Berteaud
f40e85abee Update BackupPC template 2021-01-13 19:31:27 +01:00
Daniel Berteaud
13e4669fe7 Automatic commit of package [zabbix-agent-addons] release [0.2.142-1].
Created by command:

/usr/bin/tito tag
2021-01-13 17:48:56 +01:00
Daniel Berteaud
bf190465bf Modernize lvm monitoring scripts
support getting all the value at once in a JSON structure, support VG monitoring, and various other cleanups

GLPI #47654
2021-01-13 17:48:01 +01:00
Daniel Berteaud
b95cca848c Don't catch stderr for vgdisplay commands
Prevent useless messages from poluting the output
2021-01-13 17:41:55 +01:00
76 changed files with 17696 additions and 5319 deletions

View File

@ -1 +1 @@
0.2.141-1 ./
0.2.172-1 ./

View File

@ -36,6 +36,10 @@ sub list_smart_hdd{
foreach my $line (@smart_info){
if ($line =~ m/^SMART support is:\s+Enabled/i){
$smart_enabled = 1;
last;
} elsif ($line =~ m/NVMe/i){
$smart_enabled = 1;
last;
} elsif ($line =~ m/^Transport protocol:\s+iSCSI/i){
# Skip iSCSI block
next BLOCK;

View File

@ -180,10 +180,10 @@ sub get_vg_information() {
my $units_arg = '';
$units_arg = " --units $units " if ($units);
if ( -e "/usr/sbin/vgdisplay" ) {
@vginfo = `/usr/sbin/vgdisplay -v $units_arg`;
@vginfo = `/usr/sbin/vgdisplay -v $units_arg 2>/dev/null`;
} else {
if( ! -e "/sbin/vgdisplay" ) { die("LVM utilities not installed in /sbin or /usr/sbin"); }
@vginfo = `/sbin/vgdisplay -v $units_arg`;
@vginfo = `/sbin/vgdisplay -v $units_arg 2>/dev/null`;
}
VGINF: foreach(@vginfo) {

View File

@ -4,7 +4,7 @@
Summary: Scripts for Zabbix monitoring
Name: zabbix-agent-addons
Version: 0.2.141
Version: 0.2.172
Release: 1%{?dist}
Source0: %{name}-%{version}.tar.gz
BuildArch: noarch
@ -22,6 +22,10 @@ Requires: perl(MIME::Base64)
Requires: perl(File::Which)
Requires: perl(Config::Simple)
Requires: perl(Statistics::Descriptive)
%if 0%{?rhel} > 6
# used by samba4 scripts, which wont run on anything < 7
Requires: perl(File::ReadBackwards)
%endif
Requires: fping
BuildRequires: perl
%if ! 0%{?_without_selinux}
@ -102,6 +106,125 @@ fi
%endif
%changelog
* Thu Dec 21 2023 Daniel Berteaud <dbd@ehtrace.com> 0.2.172-1
- Add Zabbix template for storageDevices (dbd@ehtrace.com)
- Read raw value for SSL_Life_Left (dbd@ehtrace.com)
- Read SSD_Life_Left if available (dbd@ehtrace.com)
- /dev/bus/0 might not exist but can be queried (dbd@ehtrace.com)
- Report more info from some NVMe (dbd@ehtrace.com)
- Adjust default values for stor dev (dbd@ehtrace.com)
- Fix UserParam (dbd@ehtrace.com)
- Add new script for smart monitoring (dbd@ehtrace.com)
* Tue Sep 19 2023 Daniel Berteaud <dbd@ehtrace.com> 0.2.171-1
- Ignore samba NT_STATUS_PROTOCOL_UNREACHABLE errors (dbd@ehtrace.com)
* Thu Jun 29 2023 Daniel Berteaud <dbd@ehtrace.com> 0.2.170-1
- Fix + discover NMVe (dbd@ehtrace.com)
* Thu Jun 29 2023 Daniel Berteaud <dbd@ehtrace.com> 0.2.169-1
- Better sensor output parsing (dbd@ehtrace.com)
* Thu Jun 29 2023 Daniel Berteaud <dbd@ehtrace.com> 0.2.168-1
- Drop ipmitool stderr and simplify output parsing (dbd@ehtrace.com)
* Thu Jun 29 2023 Daniel Berteaud <dbd@ehtrace.com> 0.2.167-1
- Fix fan detection on some BMC boards (dbd@ehtrace.com)
- Update ZFS template (dbd@ehtrace.com)
* Sat Mar 26 2022 Daniel Berteaud <dbd@ehtrace.com> 0.2.166-1
- Fix counting samba computers auth tries (dbd@ehtrace.com)
* Mon Mar 21 2022 Daniel Berteaud <dbd@ehtrace.com> 0.2.165-1
- last_seen might not be defined in check_unifi (dbd@ehtrace.com)
* Mon Mar 21 2022 Daniel Berteaud <dbd@ehtrace.com> 0.2.164-1
- Use JSON bool in unifi scripts (dbd@ehtrace.com)
* Mon Jan 24 2022 Daniel Berteaud <dbd@ehtrace.com> 0.2.163-1
- Fix check_zimbra_sudo (dbd@ehtrace.com)
* Fri Jan 21 2022 Daniel Berteaud <dbd@ehtrace.com> 0.2.162-1
- Add alloc_ct for LVM VG when missing (dbd@ehtrace.com)
* Fri Jan 21 2022 Daniel Berteaud <dbd@ehtrace.com> 0.2.161-1
- Fix Zimbra discovery and check scripts (dbd@ehtrace.com)
* Thu Jan 20 2022 Daniel Berteaud <dbd@ehtrace.com> 0.2.160-1
- Add a {#DOCKER_CONTAINER_STATUS} LLD macro (dbd@ehtrace.com)
* Thu Jan 20 2022 Daniel Berteaud <dbd@ehtrace.com> 0.2.159-1
- Update Docker template (dbd@ehtrace.com)
- Don't query state in docker discovery (dbd@ehtrace.com)
* Thu Jan 13 2022 Daniel Berteaud <dbd@ehtrace.com> 0.2.158-1
- Small fixes for Docker check script and template (dbd@ehtrace.com)
* Thu Jan 13 2022 Daniel Berteaud <dbd@ehtrace.com> 0.2.157-1
- Enhacements in the Docker template (dbd@ehtrace.com)
* Wed Jan 12 2022 Daniel Berteaud <dbd@ehtrace.com> 0.2.156-1
- Add Docker scripts (dbd@ehtrace.com)
* Tue Jan 11 2022 Daniel Berteaud <dbd@ehtrace.com> 0.2.155-1
- Release bump
* Thu Dec 16 2021 Daniel Berteaud <dani@lapiole.org> 0.2.154-1
- Fix zpool iostat as /proc/spl/kstat/zfs/pool/io doesn't exist anymore
(dani@lapiole.org)
- Add nodata triggers for Elasticsearch (daniel@firewall-services.com)
- Include Zabbix template for Elasticsearch (daniel@firewall-services.com)
* Tue Oct 19 2021 Daniel Berteaud <daniel@firewall-services.com> 0.2.153-1
- Tweak elasticsearch monitoring scripts (daniel@firewall-services.com)
* Mon Oct 18 2021 Daniel Berteaud <daniel@firewall-services.com> 0.2.152-1
- Small fixes in elasticsearch scripts (daniel@firewall-services.com)
* Mon Oct 18 2021 Daniel Berteaud <daniel@firewall-services.com> 0.2.151-1
- Add Elasticsearch monitoring scripts (daniel@firewall-services.com)
- Updates and fixes in Zabbix templates (daniel@firewall-services.com)
* Fri Jul 16 2021 Daniel Berteaud <daniel@firewall-services.com> 0.2.150-1
- Do not count Unconfigured(good) drives as an error (daniel@firewall-
services.com)
- Remove duplicated templates (daniel@firewall-services.com)
- Typo in template filename (daniel@firewall-services.com)
- Update and provide more templates (daniel@firewall-services.com)
- Update and add more Zabbix templates (daniel@firewall-services.com)
- Remove health and capacity sanoid checks from discovery (daniel@firewall-
services.com)
* Thu May 27 2021 Daniel Berteaud <daniel@firewall-services.com> 0.2.149-1
- Support Debian lib path for BackupPC (daniel@firewall-services.com)
* Wed Feb 17 2021 Daniel Berteaud <daniel@firewall-services.com> 0.2.148-1
- Fix zfs pool monitoring when a pool has errors (daniel@firewall-services.com)
- Alert only if not samba monitoring for 25min (instead of 15)
(daniel@firewall-services.com)
* Thu Jan 14 2021 Daniel Berteaud <daniel@firewall-services.com> 0.2.147-1
- [check_samba_dc_sudo] Fix typo with GPO listing (daniel@firewall-
services.com)
* Thu Jan 14 2021 Daniel Berteaud <daniel@firewall-services.com> 0.2.146-1
- [check_samba_sudo] Update default audit log file path, and drop errors from
samba-tool (daniel@firewall-services.com)
* Thu Jan 14 2021 Daniel Berteaud <daniel@firewall-services.com> 0.2.145-1
- Add perl(File::ReadBackwards) dependency (daniel@firewall-services.com)
* Thu Jan 14 2021 Daniel Berteaud <daniel@firewall-services.com> 0.2.144-1
- Optimize samba audit_auth log parsing by reading from the tail of the file
(daniel@firewall-services.com)
* Wed Jan 13 2021 Daniel Berteaud <daniel@firewall-services.com> 0.2.143-1
- Update BackupPC template (daniel@firewall-services.com)
* Wed Jan 13 2021 Daniel Berteaud <daniel@firewall-services.com> 0.2.142-1
- Modernize lvm monitoring scripts (daniel@firewall-services.com)
- Don't catch stderr for vgdisplay commands (daniel@firewall-services.com)
* Tue Jan 12 2021 Daniel Berteaud <daniel@firewall-services.com> 0.2.141-1
- Small fixes in check_samba_dc (skip unparsable logs, and handle message with
NT_STATUS_NO_SUCH_USER (daniel@firewall-services.com)

9
zabbix_conf/docker.conf Normal file
View File

@ -0,0 +1,9 @@
# Discover Docker items
# $1 can be containers, networks, volumes
UserParameter=container.docker.discovery[*],/usr/bin/sudo /var/lib/zabbix/bin/disco_docker_sudo --what $1
# Type: Agent or Agent (active)
# container.docker.check.all[type,id]
# Where type is what to monitor (global, container, network, volume)
# id is the id of the item to monitor. Can be a name or an ID. For the global check, there's no ID
UserParameter=container.docker.check[*],/usr/bin/sudo /var/lib/zabbix/bin/check_docker_sudo --$1 $2

View File

@ -0,0 +1,2 @@
UserParameter=elasticsearch.discovery[*],/var/lib/zabbix/bin/disco_elasticsearch --url=$1 --user=$2 --pass=$3 --$4
UserParameter=elasticsearch.check[*],/var/lib/zabbix/bin/check_elasticsearch --url=$1 --user=$2 --pass=$3 --$4 $5

View File

@ -5,4 +5,5 @@ UserParameter=vfs.lvm.discovery[*],/usr/bin/sudo /var/lib/zabbix/bin/disco_lvm_s
# Type: Agent or Agent (active)
# Key: vfs.lvm.lv[volume,key] where volume is the path to a logical volume and
# key can be size, allocation (for snapshots only) or status
UserParameter=vfs.lvm.lv[*],/usr/bin/sudo /var/lib/zabbix/bin/check_lvm_sudo $1 $2
UserParameter=vfs.lvm.lv[*],/usr/bin/sudo /var/lib/zabbix/bin/check_lvm_sudo --lv='$1' --what='$2'
UserParameter=vfs.lvm.vg[*],/usr/bin/sudo /var/lib/zabbix/bin/check_lvm_sudo --vg='$1' --what='$2'

View File

@ -5,3 +5,7 @@ UserParameter=hardware.disk.smart.discovery,/usr/bin/sudo /var/lib/zabbix/bin/di
# Takes two args: the drives to check, and the value to get
# eg: hardward.disk.smart[/dev/sda,Reallocated_Sector_Ct]
UserParameter=hardware.disk.smart[*],/usr/bin/sudo /var/lib/zabbix/bin/check_smart_sudo $1 $2
# New smart disk discovery/monitoring
UserParameter=stor.dev.discovery[*],/usr/bin/sudo /var/lib/zabbix/bin/disco_stor_dev_sudo
UserParameter=stor.dev.info[*],/usr/bin/sudo /var/lib/zabbix/bin/check_stor_dev_sudo --dev "$1" --type "$2"

View File

@ -1,6 +1,7 @@
#!/usr/bin/perl
use lib "/usr/share/BackupPC/lib";
use lib "/usr/share/backuppc/lib";
use lib "/usr/local/BackupPC/lib";
use BackupPC::Lib;
use BackupPC::CGI::Lib;

View File

@ -0,0 +1,90 @@
#!/usr/bin/perl
use strict;
use warnings;
use JSON;
use Getopt::Long;
use File::Which;
use Date::Parse;
my $docker = which('docker');
my $json = {};
my $pretty = 0;
my ($global, $container, $network, $volume) = undef;
GetOptions(
'global' => \$global,
'container=s' => \$container,
'network=s' => \$network,
'volume=s' => \$volume,
'pretty' => \$pretty
);
# Sanitize args
if (defined $container and not $container =~ m/^[a-zA-Z0-9\-_]+/){
die "Invalid container ID $container\n";
} elsif (defined $network and not $network =~ m/^[a-zA-Z0-9\-_]+/){
die "Invalid network ID\n";
} elsif (defined $volume and not $volume =~ m/^[a-zA-Z0-9\-_]+/){
die "Invalid volume name\n";
}
# Default formating
my $format = '{{ json . }}';
my $cmd;
if ($global){
$json->{info} = from_json(qx($docker info --format '$format'));
} elsif (defined $container) {
$json->{inspect} = from_json(qx($docker container inspect $container --format '$format'));
$json->{stats} = from_json(qx($docker container stats $container --format '$format' --no-stream));
# Remove percent sign so Zabbix can get raw value
foreach my $stat (qw(MemPerc CPUPerc)){
$json->{stats}->{$stat} =~ s/%$//;
}
# Extract mem usage vs mem limit, net in vs net out and blk read vs blk write
($json->{stats}->{MemCurrent}, $json->{stats}->{MemLimit}) = split(/\s*\/\s*/, $json->{stats}->{MemUsage});
($json->{stats}->{NetIOIn}, $json->{stats}->{NetIOOut}) = split(/\s*\/\s*/, $json->{stats}->{NetIO});
($json->{stats}->{BlockIORead}, $json->{stats}->{BlockIOWrite}) = split(/\s*\/\s*/, $json->{stats}->{BlockIO});
# Convert into Bytes
foreach my $stat (qw(MemCurrent MemLimit NetIOIn NetIOOut BlockIORead BlockIOWrite)){
$json->{stats}->{$stat} = convert_unit($json->{stats}->{$stat});
}
# Compute a useful Uptime from the StartedAt value
if ($json->{inspect}->{State}->{Running}){
$json->{stats}->{Uptime} = int(time() - str2time($json->{inspect}->{State}->{StartedAt}));
} else {
$json->{stats}->{Uptime} = 0;
}
} elsif (defined $network){
$json->{inspect} = from_json(qx($docker network inspect $network --format '$format'));
} elsif (defined $volume){
$json->{inspect} = from_json(qx($docker volume inspect $volume --format '$format'));
}
print to_json($json, { pretty => $pretty }) . "\n";
sub convert_unit {
my $val = shift;
my $suffix_multiplier = {
ki => 1024,
Ki => 1024,
Mi => 1024 * 1024,
Gi => 1024 * 1024 * 1024,
Ti => 1024 * 1024 * 1024 * 1024,
Pi => 1024 * 1024 * 1024 * 1024 * 1024,
k => 1000,
K => 1000,
M => 1000 * 1000,
G => 1000 * 1000 * 1000,
T => 1000 * 1000 * 1000 * 1000,
P => 1000 * 1000 * 1000 * 1000 * 1000
};
if ($val =~ m/^(\d+(\.\d+)?)(ki|Ki|Mi|Gi|Ti|Pi|k|K|M|G|T|P)?B/){
$val = int($1 * $suffix_multiplier->{$3}) if (defined $3 and defined $suffix_multiplier->{$3});
# Remove the Bytes suffix if remaining
$val =~ s/B$//;
}
return $val;
}

View File

@ -0,0 +1,94 @@
#!/usr/bin/perl
use warnings;
use strict;
use JSON;
use Getopt::Long;
use LWP::UserAgent;
use HTTP::Request::Common;
use URI;
use Data::Dumper;
my $user = undef;
my $pass = undef;
my $url = 'http://localhost:9200';
my $certcheck = 1;
my $cluster = 0;
my $node = undef;
my $index = undef;
my $pretty = 0;
my $json = {};
GetOptions (
'user:s' => \$user,
'password:s' => \$pass,
'url=s' => \$url,
'cert-check!' => \$certcheck,
'cluster' => \$cluster,
'node=s' => \$node,
'index=s' => \$index,
'pretty' => \$pretty
);
# If no option is given, default to fetch the cluster status
if (not defined $cluster and not defined $node and not defined $index){
$cluster = 1;
}
my $uri = URI->new($url);
if (not defined $uri){
die "COuldn't parse $url as a valid url\n";
}
# If connecting over http or is host is localhost
# there's no need to check certificate
if ($uri->scheme eq 'http' or $uri->host =~ m/^localhost|127\.0\.0/){
$certcheck = 0;
}
my $resp;
my $sslopts = {};
if (not $certcheck){
$sslopts = {
verify_hostname => 0,
SSL_verify_mode => 0
}
}
my $ua = LWP::UserAgent->new(
ssl_opts => $sslopts
);
$ua->env_proxy;
if ($cluster){
$json = make_request('/_cluster/stats');
} elsif (defined $node){
my $resp = make_request('/_nodes/' . $node)->{'nodes'};
# We can specify node by ID, name or IP
if (defined $resp->{$node}){
$json = $resp->{$node};
} else {
my $node_id = (keys %{$resp})[0];
$json = $resp->{$node_id};
}
} elsif (defined $index){
$json = make_request('/_cluster/health/' . $index . '?level=indices')->{'indices'}->{$index};
}
print to_json($json, { pretty => $pretty });
sub make_request {
my $path = shift;
my $req_url = $url . $path;
my $req = GET $req_url;
if (defined $user and $user ne '' and defined $pass and $pass ne ''){
$req->authorization_basic($user, $pass);
}
my $resp = $ua->request($req);
die "Request to $req_url failed : " . $resp->message . "\n" if $resp->is_error;
return from_json($resp->decoded_content);
}

View File

@ -1,49 +1,76 @@
#!/usr/bin/perl -w
use Zabbix::Agent::Addons::LVM;
use Getopt::Long;
use JSON;
Zabbix::Agent::Addons::LVM->units(B);
if (@ARGV < 2){
usage();
exit(1);
my $vg = undef;
my $lv = undef;
my $what = undef;
my $pretty = 0;
GetOptions(
'vg=s' => \$vg,
'lv=s' => \$lv,
'what:s' => \$what,
"pretty" => \$pretty
);
if (not defined $lv and not defined $vg){
$lv ||= $ARGV[0];
$what ||= $ARGV[1];
}
my $vol = $ARGV[0];
my $what = $ARGV[1];
if (not defined $lv and not defined $vg){
usage();
exit 1;
}
sub usage {
print<<"EOF";
Usage: $0 <logical volume> [size|allocation|allocation_pool_data|allocation_metadata|status]
$0 --lv=<logical volume>
$0 --lv=<logical volume> --what=<size|allocation|allocation_pool_data|allocation_metadata|status|etc.>
$0 --vg=<volume group>
$0 --vg=<volume group> --what=<alloc_pe_size|vg_size|etc.>
EOF
}
my %info = get_lv_info($vol);
my $json;
if (defined $vg){
%{$json} = get_volume_group_information($vg);
# Depending on LVM version, alloc_ct might not be present
if (not defined $json->{alloc_ct}){
$json->{alloc_ct} = sprintf("%.1f", 100 * $json->{alloc_pe_size} / $json->{vg_size});
}
} elsif (defined $lv) {
%{$json} = get_lv_info($lv);
} else{
usage();
}
if ($what eq 'size'){
print $info{size};
# Normalize float values
foreach (qw(allocated_to_snapshot allocated_pool_data allocated_meta_data)){
$json->{$_} =~ s/,/./g if (defined $json->{$_});
}
elsif ($what eq 'allocation'){
my $ret = (defined $info{allocated_to_snapshot}) ? $info{allocated_to_snapshot} : "ZBX_NOTSUPPORTED";
$ret =~ s/,/\./;
print $ret;
# Compat with older versions
my $old_keys = {
allocation => 'allocated_to_snapshot',
allocation_pool_data => 'allocated_pool_data',
allocation_metadata => 'allocated_meta_data'
};
if (defined $what && defined $old_keys->{$what}){
$what = $old_keys->{$what};
}
elsif ($what eq 'allocation_pool_data'){
my $ret = (defined $info{allocated_pool_data}) ? $info{allocated_pool_data} : "ZBX_NOTSUPPORTED";
$ret =~ s/,/\./;
print $ret;
}
elsif ($what eq 'allocation_metadata'){
my $ret = (defined $info{allocated_meta_data}) ? $info{allocated_meta_data} : "ZBX_NOTSUPPORTED";
$ret =~ s/,/\./;
print $ret;
}
elsif ($what eq 'status'){
print $info{status};
}
else{
usage();
if (defined $what and $what ne ''){
print ((defined $json->{$what}) ? $json->{$what} : 'ZBX_NOTSUPPOTED');
} else {
print to_json($json, { pretty => $pretty });
}
exit(0);

View File

@ -183,7 +183,7 @@ ADAPTER: for ( my $adp = 0; $adp < $adapters; $adp++ ) {
open (PDLIST, "$megacli -PdList -a$adp -NoLog |")
|| die "error: Could not execute $megacli -PdList -a$adp -NoLog";
my ($slotnumber,$fwstate);
my ($slotnumber,$fwstate,$fwinfo);
PDISKS: while (<PDLIST>) {
if ( m/Slot Number:\s*(\d+)/ ) {
$slotnumber = $1;
@ -198,12 +198,15 @@ ADAPTER: for ( my $adp = 0; $adp < $adapters; $adp++ ) {
}
} elsif ( m/Predictive Failure Count:\s*(\d+)/ ) {
$prederrors += $1;
} elsif ( m/Firmware state:\s*(\w+)/ ) {
} elsif ( m/Firmware state:\s*(\w+)(.*)/ ) {
$fwstate = $1;
$fwinfo = $2;
if ( $fwstate =~ m/Hotspare/ ) {
$hotsparecount++;
} elsif ( $fwstate =~ m/^Online/ ) {
# Do nothing
} elsif ( $fwstate =~ m/^Unconfigured/ && defined $fwinfo && $fwinfo =~ m/^\(good\)/) {
# Do nothing
} elsif ( $slotnumber != 255 ) {
$pdbad++;
$status = 'CRITICAL';

View File

@ -6,6 +6,7 @@ use JSON;
use Getopt::Long;
use File::Which;
use Date::Parse;
use File::ReadBackwards;
use Data::Dumper;
my $samba_tool = which('samba-tool');
@ -18,7 +19,7 @@ my $ou = undef;
# This log is expected to be in JSON format. For example, in smb.conf :
# log level = 1 auth_audit:3 auth_json_audit:4@/var/log/samba/audit_auth.log
my $audit_auth_log = '/var/log/samba/audit_auth.log';
my $audit_auth_log = '/var/log/samba/json/auth.log';
if (not defined $samba_tool or not defined $pdbedit){
print 'ZBX_NOTSUPPORTED';
@ -46,7 +47,7 @@ if (defined $ou){
if ($ou !~ m/^(?<RDN>(?<Key>(?:\\[0-9A-Fa-f]{2}|\\\[^=\,\\]|[^=\,\\]+)+)\=(?<Value>(?:\\[0-9A-Fa-f]{2}|\\\[^=\,\\]|[^=\,\\]+)+))(?:\s*\,\s*(?<RDN>(?<Key>(?:\\[0-9A-Fa-f]{2}|\\\[^=\,\\]|[^=\,\\]+)+)\=(?<Value>(?:\\[0-9A-Fa-f]{2}|\\\[^=\,\\]|[^=\,\\]+)+)))*$/){
die "Invalid OU\n";
}
foreach (qx($samba_tool ou listobjects '$ou')){
foreach (qx($samba_tool ou listobjects '$ou' 2>/dev/null)){
die "Error while counting objects of OU $ou\n" if ($? != 0);
chomp;
$json->{objects}++;
@ -115,7 +116,7 @@ if (defined $ou){
}
# Now count groups
foreach (qx($samba_tool group list)){
foreach (qx($samba_tool group list 2>/dev/null)){
$json->{accounts}->{groups}++;
}
@ -123,30 +124,33 @@ if (defined $ou){
# We want just a quick summary, so only output the first line
# manual checks will be needed to get the details, but if this field doesn't contains [ALL GOOD],
# then something is probably wrong
$json->{replication} = (split(/\n/, qx($samba_tool drs showrepl --summary)))[0];
$json->{replication} = (split(/\n/, qx($samba_tool drs showrepl --summary 2>/dev/null)))[0];
# Get the list of workers
foreach (qx($samba_tool processes)){
foreach (qx($samba_tool processes 2>/dev/null)){
if (/^([^\(\s]+).+\d+$/){
$json->{processes}->{$1}++;
}
}
# Get the number of GPO
foreach (qx($samba_tool gpo listall)){
foreach (qx($samba_tool gpo listall 2>/dev/null)){
next unless (/^GPO/);
$json->{gpo}++;
}
# Get the number of OU
foreach (qx($samba_tool ou list)){
foreach (qx($samba_tool ou list 2>/dev/null)){
$json->{ou}++;
}
if (-e $audit_auth_log){
open (my $auth_log, '<', $audit_auth_log) or die "Couldn't open $audit_auth_log : $!\n";
foreach my $line (<$auth_log>){
my $event = from_json($line);
my $backward = File::ReadBackwards->new( $audit_auth_log ) or die "Couldn't open $audit_auth_log : $!\n";
while (defined (my $line = $backward->readline)){
my $event;
eval {
$event = from_json($line);
};
# Skip the log entry if we can't parse JSON
next if (not defined $event);
my $type = $event->{type};
@ -155,13 +159,19 @@ if (defined $ou){
# Parse the date in the timstamp field
my $timestamp = str2time($event->{timestamp});
# Only look at lines from the last $since seconds. Skip if date couldn't be parsed
next if (not defined $timestamp or time() - $timestamp > $since);
# Skip if date couldn't be parsed
next if (not defined $timestamp);
# As we're reading in reverse order, if we reached an events prior to now - since, then we can stop, as all the other will be even earlier
last if (time() - $timestamp > $since);
my $subject;
if ($type eq 'Authentication'){
if ($event->{Authentication}->{status} eq 'NT_STATUS_PROTOCOL_UNREACHABLE'){
# Ignore NT_STATUS_PROTOCOL_UNREACHABLE as they are harmless
next;
}
# Accounts ending with $ are for computers
$subject = (($event->{$type}->{mappedAccount} || $event->{$type}->{clientAccount} || '')=~ m/\$$/) ? 'computers' : 'users';
$subject = (($event->{$type}->{mappedAccount} || $event->{$type}->{clientAccount} || '')=~ m/\$(\@.+)?$/) ? 'computers' : 'users';
if ($event->{Authentication}->{status} eq 'NT_STATUS_OK'){
$json->{activity}->{authentications}->{$subject}->{success}++;
} else {
@ -172,7 +182,6 @@ if (defined $ou){
$json->{activity}->{authorizations}->{$subject}++;
}
}
close $auth_log;
}
}

View File

@ -0,0 +1,120 @@
#!/usr/bin/perl
use strict;
use warnings;
use JSON;
use Getopt::Long;
use File::Which;
my $dev = undef;
my $type = 'auto';
my $what = 'json';
my $pretty = 0;
GetOptions(
'device=s' => \$dev,
'type=s' => \$type,
'what=s' => \$what,
'pretty' => \$pretty
);
if (not defined $dev or $dev !~ m|^/dev/\w+(/\w+)*$|){
print "Invalid --device\n";
exit 1;
} elsif ($what !~ m/^\w+$/){
print "Invalid --what\n";
exit 1;
} elsif ($type !~ m/^\w+\+*\w+(,\w+)*$/){
print "Invalid --type\n";
exit 1;
}
my $json = {
temperature_celsius => 25,
power_on_hours => 0,
power_cycle_count => 0,
reallocated_sector_count => 0,
current_pending_sector => 0,
offline_uncorrectable => 0,
percent_lifetime_remain => 100,
firmware_version => 0
};
my $smartctl = which('smartctl');
sub print_out {
if ($what eq 'json'){
print to_json($json, { pretty => $pretty });
exit 0;
} elsif (defined $json->{$what}){
print $json->{$what} . "\n";
exit 0;
} else {
print "ZBX_NOTSUPPORTED\n";
exit 1;
}
}
sub get_smart_attr {
my $smart = shift;
my $attr = shift;
if (defined $smart->{ata_smart_attributes}->{table}){
foreach (@{$smart->{ata_smart_attributes}->{table}}){
if ($_->{name} eq $attr){
return $_;
}
}
}
return undef;
}
if (not defined $smartctl){
$what = 'error';
print_out();
}
my $data = from_json(qx($smartctl -a $dev -d $type --json=c));
if (defined $data->{temperature}->{current}){
$json->{temperature_celsius} = $data->{temperature}->{current};
}
if (defined $data->{power_on_time}->{hours}){
$json->{power_on_hours} = $data->{power_on_time}->{hours};
}
if (defined $data->{power_cycle_count}){
$json->{power_cycle_count} = $data->{power_cycle_count};
}
if (defined $data->{firmware_version}){
$json->{firmware_version} = $data->{firmware_version};
}
my ($pending, $realloc, $offline, $remain);
if ($pending = get_smart_attr($data, 'Current_Pending_Sector')){
$json->{current_pending_sector} = $pending->{raw}->{value};
}
if ($realloc = get_smart_attr($data, 'Reallocated_Sector_Ct') || get_smart_attr($data, 'Reallocated_Event_Count')){
$json->{reallocated_sector_count} = $realloc->{raw}->{value};
} elsif (defined $data->{nvme_smart_health_information_log}->{media_errors}){
# NMVe can report media error, so report it as reallocated sectors
$json->{reallocated_sector_count} = $data->{nvme_smart_health_information_log}->{media_errors};
}
if ($offline = get_smart_attr($data, 'Offline_Uncorrectable')){
$json->{offline_uncorrectable} = $offline->{raw}->{value};
}
if ($remain = get_smart_attr($data, 'Percent_Lifetime_Remain')){
$json->{percent_lifetime_remain} = $remain->{value};
} elsif ($remain = get_smart_attr($data, 'SSD_Life_Left')){
$json->{percent_lifetime_remain} = $remain->{raw}->{value};
} elsif ($remain = get_smart_attr($data, 'Wear_Leveling_Count')){
$json->{percent_lifetime_remain} = $remain->{value};
} elsif (defined $data->{nvme_smart_health_information_log}->{percentage_used}){
# NMVe sometime report the estimated life used, instead of the remaining
$json->{percent_lifetime_remain} = 100 - $data->{nvme_smart_health_information_log}->{percentage_used};
}
print_out();

View File

@ -136,7 +136,7 @@ if ($unifi){
$json->{$_} = $obj->{$_} if (defined $obj->{$_});
}
# Convert last seen into a relative time
$json->{last_seen} = time - $obj->{last_seen};
$json->{last_seen} = (defined $obj->{last_seen}) ? time - $obj->{last_seen} : time;
# Add some more info in sys_stats
$json->{sys_stats}->{$_} = $obj->{'system-stats'}->{$_} foreach (qw/cpu mem uptime/);
@ -162,7 +162,7 @@ if ($unifi){
}
foreach my $entry (@{from_json($resp->decoded_content)->{data}}){
next if (not $entry->{ap_mac} or $entry->{ap_mac} ne $dev or $entry->{is_wired} == JSON::PP::true);
next if (not $entry->{ap_mac} or $entry->{ap_mac} ne $dev or $entry->{is_wired} == JSON::true);
foreach (@radio_proto){
if ($entry->{radio_proto} eq $_){
$json->{'num_sta_' . $_}++;
@ -199,10 +199,10 @@ if ($unifi){
$json->{$_} = $obj->{$_} || 0;
}
# Convert last_seen to relative
$json->{last_seen} = time - $json->{last_seen};
$json->{last_seen} = (defined $obj->{last_seen}) ? time - $obj->{last_seen} : time;
# For wireless stations, we gather some more info
if ($obj->{is_wired} == JSON::PP::false){
if ($obj->{is_wired} == JSON::false){
my @client_wireless = qw/rx_rate tx_rate essid ap_mac tx_power radio_proto signal noise satisfaction/;
foreach (@client_wireless){
$json->{$_} = $obj->{$_} || 0;

View File

@ -100,7 +100,7 @@ sub get_zpool_errors {
};
my $i = 0;
my $index = {};
foreach my $line (qx($zpool status $pool)){
foreach my $line (qx($zpool status $pool 2>/dev/null)){
# Output looks like
# pool: rpool
# state: ONLINE
@ -163,13 +163,20 @@ sub convert_suffix {
sub get_zpool_stats {
my $pool = shift;
my $stats = {};
return $stats unless (-e "/proc/spl/kstat/zfs/$pool/io");
open STAT, "</proc/spl/kstat/zfs/$pool/io";
while (<STAT>){
if (m/^(?<nread>\d+)\s+(?<nwritten>\d+)\s+(?<reads>\d+)\s+(?<writes>\d+)\s+(?<wtime>\d+)\s+(?<wlentime>\d+)\s+(?<wupdate>\d+)\s+(?<rtime>\d+)\s+(?<rlentime>\d+)\s+(?<rupdate>\d+)\s+(?<wcnt>\d+)\s+(?<rcnt>\d+)/){
$stats->{$_} = $+{$_} foreach (keys %+);
open UPTIME, "</proc/uptime";
$_ = <UPTIME>;
chomp;
my ($uptime , undef) = split;
$uptime = int $uptime;
close UPTIME;
foreach my $line (qx($zpool iostat $pool -pH)){
if ($line =~ m/^$pool\s+\d+\s+\d+\s+(?<reads>\d+)\s+(?<writes>\d+)\s+(?<nread>\d+)\s+(?<nwritten>\d+)/){
# zpool iostat shows average IO since boot, so just multiply it
# by the uptime in seconds to get cumulated IO since boot
# Zabbix server will then be able to calculate the delta between two values
$stats->{$_} = $+{$_} * $uptime foreach (keys %+);
last;
}
}
close STAT;
return $stats;
}

View File

@ -45,8 +45,8 @@ my $output = {};
if (defined $status){
foreach my $line (qx($zmcontrol status)){
if ($line =~ m/^\s+(\w+)\s+(Running|Stopped)/){
$output->{$1} = ($2 eq 'Running') ? 1 : 0;
if ($line =~ m/^\s+(\w+)(\swebapp)?\s+(Running|Stopped)/){
$output->{$1} = ($3 eq 'Running') ? 1 : 0;
}
}
if ($status eq 'all'){

View File

@ -1,6 +1,7 @@
#!/usr/bin/perl
use lib "/usr/share/BackupPC/lib";
use lib "/usr/share/backuppc/lib";
use lib "/usr/local/BackupPC/lib";
use BackupPC::Lib;
use BackupPC::CGI::Lib;

View File

@ -0,0 +1,68 @@
#!/usr/bin/perl
use warnings;
use strict;
use JSON;
use Getopt::Long;
use File::Which;
use Data::Dumper;
my $what = 'containers';
my $pretty = 0;
GetOptions(
'what=s' => \$what,
'pretty' => \$pretty
);
my $json = [];
my $docker = which('docker');
# If the docker cli is not available, terminate now
if (not defined $docker){
print $json . "\n";
exit(0);
}
my $format;
my $cmd;
if ($what =~ m/^containers?/){
$format = '{' .
'"{#DOCKER_CONTAINER_ID}":"{{ .ID }}",' .
'"{#DOCKER_CONTAINER_IMAGE}": "{{ .Image }}",' .
'"{#DOCKER_CONTAINER_NAME}":"{{ .Names }}",' .
'"{#DOCKER_CONTAINER_STATUS}":"{{ .Status }}"' .
'}';
$cmd = "$docker container list --all --format '$format'";
} elsif ($what =~ m/^networks?/){
$format = '{' .
'"{#DOCKER_NET_ID}":"{{ .ID }}",' .
'"{#DOCKER_NET_NAME}":"{{ .Name }}",' .
'"{#DOCKER_NET_DRIVER}":"{{ .Driver }}",' .
'"{#DOCKER_NET_SCOPE}":"{{ .Scope }}"' .
'}';
$cmd = "$docker network list --format '$format'";
} elsif ($what =~ m/^volumes?/){
$format = '{' .
'"{#DOCKER_VOL_NAME}":"{{ .Name }}",' .
'"{#DOCKER_VOL_DRIVER}":"{{ .Driver }}",' .
'"{#DOCKER_VOL_SCOPE}":"{{ .Scope }}"' .
'}';
$cmd = "$docker volume list --format '$format'";
} else {
print <<_EOF
Usage: $0 --what=<item to discover> [--pretty]
with available item being
* containers : list containers, including stopped ones
* networks : list networks
* volumes : list volumes
_EOF
}
foreach my $line (qx($cmd)){
chomp $line;
push @{$json}, from_json($line);
}
print to_json($json, { pretty => $pretty }) . "\n";
exit(0);

View File

@ -0,0 +1,95 @@
#!/usr/bin/perl
use warnings;
use strict;
use JSON;
use Getopt::Long;
use LWP::UserAgent;
use HTTP::Request::Common;
use URI;
use Data::Dumper;
my $user = undef;
my $pass = undef;
my $url = 'http://localhost:9200';
my $certcheck = 1;
my $nodes = 0;
my $indices = 0;
my $pretty = 0;
my $json = [];
GetOptions (
'user:s' => \$user,
'password:s' => \$pass,
'url=s' => \$url,
'cert-check!' => \$certcheck,
'nodes' => \$nodes,
'indices' => \$indices,
'pretty' => \$pretty
);
if ($nodes and $indices){
die "--nodes and --indices are mutually exclusive\n";
}
my $uri = URI->new($url);
if (not defined $uri){
die "$url is not a valid URL\n";
}
# If connecting over http or is host is localhost
# there's no need to check certificate
if ($uri->scheme eq 'http' or $uri->host =~ m/^localhost|127\.0\.0/){
$certcheck = 0;
}
my $sslopts = {};
if (not $certcheck){
$sslopts = {
verify_hostname => 0,
SSL_verify_mode => 0
}
}
my $ua = LWP::UserAgent->new(
ssl_opts => $sslopts
);
$ua->env_proxy;
if ($nodes){
foreach (@{make_request('/_cat/nodes?format=json&full_id&h=ip,role,master,name,id,version')}){
push @{$json}, {
'{#ES_NODE_NAME}' => $_->{name},
'{#ES_NODE_ROLE}' => $_->{role},
'{#ES_NODE_ID}' => $_->{id},
'{#ES_NODE_VERSION}' => $_->{version},
'{#ES_NODE_MASTER}' => $_->{master}
};
}
} elsif ($indices){
foreach (@{make_request('/_cat/indices?format=json')}){
push @{$json}, {
'{#ES_INDEX_NAME}' => $_->{index},
'{#ES_INDEX_STATUS}' => $_->{status},
'{#ES_INDEX_UUID}' => $_->{uuid}
};
}
}
print to_json($json, { pretty => $pretty });
sub make_request {
my $path = shift;
my $req_url = $url . $path;
my $req = GET $req_url;
if (defined $user and $user ne '' and defined $pass and $pass ne ''){
$req->authorization_basic($user, $pass);
}
my $resp = $ua->request($req);
die "Request to $req_url failed : " . $resp->message . "\n" if $resp->is_error;
return from_json($resp->decoded_content);
}

View File

@ -0,0 +1,61 @@
#!/usr/bin/perl
use strict;
use JSON;
use Getopt::Long;
use Data::Dumper;
use File::Which;
my $pretty = 0;
GetOptions(
'pretty' => \$pretty
);
my $smartctl = which('smartctl');
my $json = [];
sub print_out {
print to_json($json, { pretty => $pretty });
}
if (not defined $smartctl){
print_out();
exit 0;
}
my $smart_scan = from_json(qx($smartctl --scan-open --json=c));
if (not defined $smart_scan){
print_out();
exit 0;
}
foreach my $device (@{$smart_scan->{devices}}){
my ($model, $sn, $has_smart) = "";
my $smart_info = from_json(qx($smartctl -i $device->{name} -d $device->{type} --json=c));
if (defined $smart_info){
$model = $smart_info->{model_name};
$sn = $smart_info->{serial_number};
$has_smart = (
$smart_info->{in_smartctl_database} or (
defined $smart_info->{smart_support} and
$smart_info->{smart_support}->{available} and
$smart_info->{smart_support}->{enabled}
)
) ? 1 : 0;
}
push @{$json}, {
'{#STOR_DEV_NAME}' => $device->{name},
'{#STOR_DEV_DESC}' => $device->{info_name},
'{#STOR_DEV_TYPE}' => $device->{type},
'{#STOR_DEV_PROTO}' => $device->{protocol},
'{#STOR_DEV_MODEL}' => $model,
'{#STOR_DEV_SN}' => $sn,
'{#STOR_DEV_SMART}' => int $has_smart
};
}
print_out();

View File

@ -107,8 +107,8 @@ if ($what eq 'devices'){
foreach my $entry (@{from_json($resp->decoded_content)->{data}}){
# Ignore other sites
next if ($entry->{site_id} ne $site_id);
next if ($type eq 'wireless' and $entry->{is_wired} eq 'true');
next if ($type eq 'wired' and $entry->{is_wired} eq 'false');
next if ($type eq 'wireless' and $entry->{is_wired} == JSON::true);
next if ($type eq 'wired' and $entry->{is_wired} == JSON::false);
push @{$json->{data}}, {
'{#UNIFI_STA_ID}' => $entry->{_id},
'{#UNIFI_STA_NAME}' => (defined $entry->{hostname}) ? $entry->{hostname} : $entry->{mac},

View File

@ -70,7 +70,7 @@ if ($pools){
push @{$json->{data}}, { '{#ZFS_SNAP}' => $_ };
}
} elsif ($sanoidmon){
push @{$json->{data}}, { '{#ZFS_SANOID}' => $_ } foreach (qw(snapshot capacity health));
push @{$json->{data}}, { '{#ZFS_SANOID}' => $_ } foreach (qw(snapshot));
} elsif ($arcstats){
push @{$json->{data}}, { '{#ZFS_STATS}' => 'arcstats' };
}

View File

@ -6,8 +6,7 @@ use Getopt::Long;
use Net::Domain qw(hostfqdn);
use Data::Dumper;
my $json;
@{$json->{data}} = ();
my $json = [];
my $pretty = 0;
my $services = 1;
@ -47,7 +46,7 @@ if ($services){
};
foreach my $service (qx($zmprov getServer $hostname zimbraServiceEnabled)){
if ($service =~ m/^zimbraServiceEnabled:\s+(\w+)/){
push @{$json->{data}}, {
push @{$json}, {
'{#ZM_SERVICE}' => $1
};
}
@ -55,7 +54,7 @@ if ($services){
} elsif ($servers){
foreach my $server (qx($zmprov getAllServers)){
chomp $server;
push @{$json->{data}}, {
push @{$json}, {
'{#ZM_SERVER}' => $server
};
}

View File

@ -72,7 +72,7 @@ my $sensors = {};
# Try to detect IPMI sensors
if ($ipmitool && -x $ipmitool){
# First check for temperature sensors
my @lines = qx($ipmitool sdr type Temperature);
my @lines = qx($ipmitool sdr type Temperature 2>/dev/null);
if ($? == 0){
SENSOR: foreach my $l (@lines){
chomp $l;
@ -84,7 +84,7 @@ if ($ipmitool && -x $ipmitool){
my $name = $1;
my $sensor = {};
my @details = qx($ipmitool sdr get '$name');
my @details = qx($ipmitool sdr get '$name' 2>/dev/null);
if ($? != 0){
print "Couldn't get detail for sensor $name\n";
next SENSOR;
@ -124,7 +124,7 @@ if ($ipmitool && -x $ipmitool){
$sensor->{description} = $name;
$sensor->{type} = 'temp';
$sensor->{unit} = '°C';
$sensor->{cmd} = "$ipmitool sdr get '$name' | grep 'Sensor Reading' | awk '{print \$4}' | head -1";
$sensor->{cmd} = "$ipmitool sdr get '$name' 2>/dev/null | perl -ne 'if (/Sensor Reading\\s*:\\s*([^\\s]+)/) { print \"\$1\\n\"; last }'";
my $id = sensor_name($name);
$sensors->{$id} = $sensor;
print "Found a temperature sensor using IPMI: $name\n";
@ -133,7 +133,7 @@ if ($ipmitool && -x $ipmitool){
# Now check for Fan, nearly the same as Temp, but
# * We try to detect the unit
# * threshold handling is not the same
@lines = qx($ipmitool sdr type Fan);
@lines = qx($ipmitool sdr type Fan 2>/dev/null);
if ($? == 0){
SENSOR: foreach my $l (@lines){
chomp $l;
@ -144,7 +144,7 @@ if ($ipmitool && -x $ipmitool){
my $value = $3;
my $sensor = {};
my @details = qx($ipmitool sdr get '$name');
my @details = qx($ipmitool sdr get '$name' 2>/dev/null);
if ($? != 0){
print "Couldn't get detail for sensor $name\n";
next SENSOR;
@ -152,9 +152,9 @@ if ($ipmitool && -x $ipmitool){
my $val = undef;
foreach my $d (@details){
chomp $d;
if ($d =~ m/^\s*Sensor\sReading\s*:\s*(\w+)/){
if ($d =~ m/^\s*Sensor\sReading\s*:\s*(\d+(\.\d+)?)/){
$val = $1;
if ($val !~ m/^\d+$/){
if ($val !~ m/^\d+(\.\d+)?$/){
print "Skipping sensor $name, couldn't parse its value: $val\n";
next SENSOR;
}
@ -174,14 +174,14 @@ if ($ipmitool && -x $ipmitool){
$sensor->{description} = $name;
$sensor->{type} = 'fan';
$sensor->{unit} = ($value =~ m/percent|%/ || $val < 100) ? '%' : 'rpm';
$sensor->{cmd} = "$ipmitool sdr get '$name' | grep 'Sensor Reading' | awk '{print \$4}' | head -1";
$sensor->{cmd} = "$ipmitool sdr get '$name' 2>/dev/null | perl -ne 'if (/Sensor Reading\\s*:\\s*([^\\s]+)/) { print \"\$1\\n\"; last }'";
my $id = sensor_name($name);
$sensors->{$id} = $sensor;
print "Found a fan sensor using IPMI: $name\n";
}
}
# Now look for power information
@lines = qx($ipmitool sdr type 'Current');
@lines = qx($ipmitool sdr type 'Current' 2>/dev/null);
if ($? == 0){
SENSOR: foreach my $l (@lines){
chomp $l;
@ -193,7 +193,7 @@ if ($ipmitool && -x $ipmitool){
my $value = $4;
my $sensor = {};
if ($name =~ m/(Power)|(Pwr)|(Consumption)|(PS\d+\sCurr\sOut)/i || $value =~ m/W(att)?/i){
my @details = qx($ipmitool sdr get '$name');
my @details = qx($ipmitool sdr get '$name' 2>/dev/null);
if ($? != 0){
print "Couldn't get detail for sensor $name\n";
next SENSOR;
@ -224,7 +224,7 @@ if ($ipmitool && -x $ipmitool){
$sensor->{description} = $name;
$sensor->{type} = 'power';
$sensor->{unit} = ($name =~ m/%/) ? '%' : 'Watt';
$sensor->{cmd} = "$ipmitool sdr get '$name' | grep 'Sensor Reading' | awk '{print \$4}' | head -1";
$sensor->{cmd} = "$ipmitool sdr get '$name' 2>/dev/null | perl -ne 'if (/Sensor Reading\\s*:\\s*([^\\s]+)/) { print \"\$1\\n\"; last }'";
my $id = sensor_name($name);
$sensors->{$id} = $sensor;
print "Found a power sensor using IPMI: $name\n";
@ -276,7 +276,7 @@ if ($lmsensor && -x $lmsensor){
$sensor->{description} = $name;
$sensor->{type} = 'temp';
$sensor->{unit} = '°C';
$sensor->{cmd} = "$lmsensor | grep '$name:' | cut -d+ -f2 | cut -d. -f1 | head -1";
$sensor->{cmd} = "$lmsensor | perl -ne 'if (/^$name:\\s*\\+(\\d+)/) { print \"\$1\\n\"; last }'";
my $id = sensor_name($name);
$sensors->{$id} = $sensor;
print "Found a temperature sensor using lm_sensors: $name\n";
@ -297,7 +297,7 @@ if ($smartctl && -x $smartctl){
threshold_high => $def_hd_temp_thres_high,
type => 'temp',
unit => '°C',
cmd => "$smartctl -A /dev/$block | grep $1 | awk '{print \$10}'"
cmd => "$smartctl -A /dev/$block | perl -ne 'if (/Temperature_Celsius(\\s+[^\\s]+){7}\\s+(\\d+(\\.\\d+)?)/) { print \"\$2\\n\"; last }'"
};
print "Found a temperature sensor using smartctl: $block\n";
last;
@ -310,7 +310,7 @@ if ($smartctl && -x $smartctl){
threshold_high => $def_hd_temp_thres_high,
type => 'temp',
unit => '°C',
cmd => "$smartctl -A /dev/$block | grep Temperature: | awk '{ print \$2 }'"
cmd => "$smartctl -A /dev/$block | perl -ne 'if (/Temperature:\\s+(\\d+(\\.\\d+)?)/) { print \"\$1\\n\"; last }'"
};
print "Found a temperature sensor using smartctl: $block\n";
last;
@ -343,7 +343,7 @@ if ($smartctl && -x $smartctl){
threshold_high => $def_hd_temp_thres_high,
type => 'temp',
unit => '°C',
cmd => "$smartctl -A -d megaraid,$i /dev/sda | grep $1 | awk '{print \$10}'"
cmd => "$smartctl -A -d megaraid,$i /dev/sda | perl -ne 'if (/(Temperature_Celsius|Airflow_Temperature_Cel)(\\s+[^\\s]+){7}\\s+(\\d+)/) { print \"\$3\\n\"; last }'"
};
print "Found a temperature sensor using smartctl (megaraid): sda-$i\n";
last;

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>4.4</version>
<date>2020-02-17T07:58:01Z</date>
<version>5.0</version>
<date>2021-09-22T16:02:43Z</date>
<groups>
<group>
<name>Templates</name>
@ -22,11 +22,186 @@
</application>
</applications>
<items>
<item>
<name>BackupPC: General info</name>
<key>backuppc.general</key>
<delay>15m</delay>
<history>0</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>BackupPC</name>
</application>
</applications>
</item>
<item>
<name>BackupPC: Total number of backups</name>
<type>DEPENDENT</type>
<key>backuppc.general[bkp]</key>
<delay>0</delay>
<history>60d</history>
<trends>1095d</trends>
<units>!backup(s)</units>
<applications>
<application>
<name>BackupPC</name>
</application>
</applications>
<preprocessing>
<step>
<type>JSONPATH</type>
<params>$.bkp</params>
</step>
</preprocessing>
<master_item>
<key>backuppc.general</key>
</master_item>
</item>
<item>
<name>BackupPC: Total full size</name>
<type>DEPENDENT</type>
<key>backuppc.general[full_size]</key>
<delay>0</delay>
<history>60d</history>
<trends>1095d</trends>
<units>B</units>
<applications>
<application>
<name>BackupPC</name>
</application>
</applications>
<preprocessing>
<step>
<type>JSONPATH</type>
<params>$.full_size</params>
</step>
</preprocessing>
<master_item>
<key>backuppc.general</key>
</master_item>
</item>
<item>
<name>BackupPC: Total history size</name>
<type>DEPENDENT</type>
<key>backuppc.general[history_size]</key>
<delay>0</delay>
<history>60d</history>
<trends>1095d</trends>
<units>B</units>
<applications>
<application>
<name>BackupPC</name>
</application>
</applications>
<preprocessing>
<step>
<type>JSONPATH</type>
<params>$.history_size</params>
</step>
</preprocessing>
<master_item>
<key>backuppc.general</key>
</master_item>
</item>
<item>
<name>BackupPC: Total number of hosts</name>
<type>DEPENDENT</type>
<key>backuppc.general[hosts]</key>
<delay>0</delay>
<history>60d</history>
<trends>1095d</trends>
<units>!host(s)</units>
<applications>
<application>
<name>BackupPC</name>
</application>
</applications>
<preprocessing>
<step>
<type>JSONPATH</type>
<params>$.hosts</params>
</step>
</preprocessing>
<master_item>
<key>backuppc.general</key>
</master_item>
</item>
<item>
<name>BackupPC: Global perf score</name>
<type>DEPENDENT</type>
<key>backuppc.general[perf]</key>
<delay>0</delay>
<history>60d</history>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<applications>
<application>
<name>BackupPC</name>
</application>
</applications>
<preprocessing>
<step>
<type>JSONPATH</type>
<params>$.perf</params>
</step>
</preprocessing>
<master_item>
<key>backuppc.general</key>
</master_item>
</item>
<item>
<name>BackupPC: Global compression ratio</name>
<type>DEPENDENT</type>
<key>backuppc.general[ratio]</key>
<delay>0</delay>
<history>60d</history>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<applications>
<application>
<name>BackupPC</name>
</application>
</applications>
<preprocessing>
<step>
<type>JSONPATH</type>
<params>$.ratio</params>
</step>
</preprocessing>
<master_item>
<key>backuppc.general</key>
</master_item>
</item>
<item>
<name>BackupPC: Total size</name>
<type>DEPENDENT</type>
<key>backuppc.general[total_size]</key>
<delay>0</delay>
<history>60d</history>
<trends>1095d</trends>
<units>B</units>
<applications>
<application>
<name>BackupPC</name>
</application>
</applications>
<preprocessing>
<step>
<type>JSONPATH</type>
<params>$.total_size</params>
</step>
</preprocessing>
<master_item>
<key>backuppc.general</key>
</master_item>
</item>
<item>
<name>Number of BackupPC processes</name>
<key>proc.num[,backuppc,,BackupPC]</key>
<delay>10m</delay>
<trends>1825d</trends>
<delay>30m</delay>
<history>60d</history>
<trends>0</trends>
<applications>
<application>
<name>BackupPC</name>
@ -38,7 +213,8 @@
<name>Number of raidsync processes</name>
<key>proc.num[,root,,BackupPC_raidsync]</key>
<delay>10m</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>0</trends>
<applications>
<application>
<name>BackupPC</name>
@ -65,7 +241,8 @@
<type>DEPENDENT</type>
<key>backuppc.entity[{#BPC_ENTITY},bkp]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<applications>
<application>
<name>BackupPC</name>
@ -86,7 +263,8 @@
<type>DEPENDENT</type>
<key>backuppc.entity[{#BPC_ENTITY},full_size]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<units>o</units>
<applications>
<application>
@ -108,7 +286,8 @@
<type>DEPENDENT</type>
<key>backuppc.entity[{#BPC_ENTITY},history_size]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<units>o</units>
<applications>
<application>
@ -130,7 +309,8 @@
<type>DEPENDENT</type>
<key>backuppc.entity[{#BPC_ENTITY},hosts]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<applications>
<application>
<name>BackupPC</name>
@ -151,7 +331,8 @@
<type>DEPENDENT</type>
<key>backuppc.entity[{#BPC_ENTITY},perf]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>!h/j</units>
<applications>
@ -174,7 +355,8 @@
<type>DEPENDENT</type>
<key>backuppc.entity[{#BPC_ENTITY},ratio]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
@ -197,7 +379,8 @@
<type>DEPENDENT</type>
<key>backuppc.entity[{#BPC_ENTITY},size]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<units>o</units>
<applications>
<application>
@ -217,7 +400,7 @@
<item_prototype>
<name>BackupPC: Info for entity {#BPC_ENTITY}</name>
<key>backuppc.entity[{#BPC_ENTITY}]</key>
<delay>1800</delay>
<delay>1h</delay>
<history>0</history>
<trends>0</trends>
<value_type>TEXT</value_type>
@ -300,7 +483,8 @@
<type>DEPENDENT</type>
<key>backuppc.host[{#BPCHOST},age]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<units>s</units>
<applications>
<application>
@ -320,7 +504,7 @@
<item_prototype>
<name>BackupPC: Info de {#BPCHOST}</name>
<key>backuppc.host[{#BPCHOST},all]</key>
<delay>15m</delay>
<delay>30m</delay>
<history>0</history>
<trends>0</trends>
<value_type>TEXT</value_type>
@ -335,7 +519,8 @@
<type>DEPENDENT</type>
<key>backuppc.host[{#BPCHOST},bkp]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<units>!backups</units>
<applications>
<application>
@ -357,7 +542,8 @@
<type>DEPENDENT</type>
<key>backuppc.host[{#BPCHOST},comp_ratio]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
@ -380,7 +566,8 @@
<type>DEPENDENT</type>
<key>backuppc.host[{#BPCHOST},duration]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<units>s</units>
<applications>
<application>
@ -402,7 +589,8 @@
<type>DEPENDENT</type>
<key>backuppc.host[{#BPCHOST},enabled]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<applications>
<application>
<name>BackupPC</name>
@ -423,7 +611,8 @@
<type>DEPENDENT</type>
<key>backuppc.host[{#BPCHOST},errors]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<units>!errors</units>
<applications>
<application>
@ -445,7 +634,8 @@
<type>DEPENDENT</type>
<key>backuppc.host[{#BPCHOST},full_size]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<units>B</units>
<applications>
<application>
@ -467,7 +657,8 @@
<type>DEPENDENT</type>
<key>backuppc.host[{#BPCHOST},history_size]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<units>B</units>
<applications>
<application>
@ -489,7 +680,8 @@
<type>DEPENDENT</type>
<key>backuppc.host[{#BPCHOST},new_size]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<units>B</units>
<applications>
<application>
@ -511,7 +703,8 @@
<type>DEPENDENT</type>
<key>backuppc.host[{#BPCHOST},new_size_avg]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<units>B</units>
<applications>
<application>
@ -533,7 +726,8 @@
<type>DEPENDENT</type>
<key>backuppc.host[{#BPCHOST},new_size_median]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<units>B</units>
<applications>
<application>
@ -555,7 +749,8 @@
<type>DEPENDENT</type>
<key>backuppc.host[{#BPCHOST},new_size_q1]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<units>B</units>
<applications>
<application>
@ -577,7 +772,8 @@
<type>DEPENDENT</type>
<key>backuppc.host[{#BPCHOST},new_size_q3]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<units>B</units>
<applications>
<application>
@ -599,7 +795,8 @@
<type>DEPENDENT</type>
<key>backuppc.host[{#BPCHOST},total_size]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<units>B</units>
<applications>
<application>
@ -624,24 +821,23 @@
<priority>WARNING</priority>
</trigger_prototype>
<trigger_prototype>
<expression>{#BPC_TOO_SMALL_FACTOR}&gt;0 and {Template_App_BackupPC:backuppc.host[{#BPCHOST},enabled].last()}=1 and {Template_App_BackupPC:backuppc.host[{#BPCHOST},bkp].last()}&gt;4 and {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].last()} &lt; ({Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_q1].last()} - ({Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_q3].last()} - {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_q1].last()}) * 1.5) and {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].last()} &lt; {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_avg].last()}/{#BPC_TOO_SMALL_FACTOR} and ({Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].dayofweek()} &lt;&gt; 6 or {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].time()} &lt; 120000) and {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].dayofweek()} &lt;&gt; 7 and {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].dayofweek()} &lt;&gt; 1 and ({Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].dayofweek()} &lt;&gt; 2 or {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].time()} &gt; 080000)</expression>
<expression>{Template_App_BackupPC:backuppc.host[{#BPCHOST},enabled].last()}=1 and {Template_App_BackupPC:backuppc.host[{#BPCHOST},bkp].last()}&gt;4 and {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].last()} &gt; ({Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_q3].last()} + ({Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_q3].last()} - {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_q1].last()}) * 1.5) and {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].last()} &gt; {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_avg].last()}*{#BPC_TOO_BIG_FACTOR} and {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].dayofweek()} &lt;&gt; 7 and {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].dayofweek()} &lt;&gt; 1 and ({Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].dayofweek()} &lt;&gt; 2 or {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].time()} &gt; {$BPC_SIZE_WARN_FROM_HOUR})</expression>
<recovery_mode>RECOVERY_EXPRESSION</recovery_mode>
<recovery_expression>{#BPC_TOO_SMALL_FACTOR}=0 or {Template_App_BackupPC:backuppc.host[{#BPCHOST},enabled].last()}=0 or {Template_App_BackupPC:backuppc.host[{#BPCHOST},bkp].last()}&lt;=4 or {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].last()} &gt;= ({Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_q1].last()} - ({Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_q3].last()} - {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_q1].last()}) * 1.5) or {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].last()} &gt;= {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_avg].last()}/{#BPC_TOO_SMALL_FACTOR}</recovery_expression>
<recovery_expression>{Template_App_BackupPC:backuppc.host[{#BPCHOST},enabled].last()}=0 or {Template_App_BackupPC:backuppc.host[{#BPCHOST},bkp].last()}&lt;=4 or {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].last()} &lt;= ({Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_q3].last()} + ({Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_q3].last()} - {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_q1].last()}) * 1.5) or {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].last()} &lt;= {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_avg].last()}*{#BPC_TOO_BIG_FACTOR}</recovery_expression>
<name>Suspiciously big ({ITEM.VALUE3}) backup for {#BPCHOST}</name>
<priority>INFO</priority>
</trigger_prototype>
<trigger_prototype>
<expression>{#BPC_TOO_SMALL_FACTOR}&gt;0 and {Template_App_BackupPC:backuppc.host[{#BPCHOST},enabled].last()}=1 and {Template_App_BackupPC:backuppc.host[{#BPCHOST},bkp].last()}&gt;4 and {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].last()} &lt; ({Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_q1].last()} - ({Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_q3].last()} - {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_q1].last()}) * 1.5) and {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].last()} &lt; {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_avg].last()}/{#BPC_TOO_SMALL_FACTOR} and {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].dayofweek()} &lt;&gt; 6 and {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].dayofweek()} &lt;&gt; 7 and {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].dayofweek()} &lt;&gt; 1 and ({Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].dayofweek()} &lt;&gt; 2 or {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].time()} &gt; {$BPC_SIZE_WARN_FROM_HOUR})</expression>
<recovery_mode>RECOVERY_EXPRESSION</recovery_mode>
<recovery_expression>{#BPC_TOO_SMALL_FACTOR}&lt;0 or {Template_App_BackupPC:backuppc.host[{#BPCHOST},enabled].last()}=0 or {Template_App_BackupPC:backuppc.host[{#BPCHOST},bkp].last()}&lt;=4 or {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].last()} &gt;= ({Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_q1].last()} - ({Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_q3].last()} - {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_q1].last()}) * 1.5) or {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].last()} &gt;= {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_avg].last()}/{#BPC_TOO_SMALL_FACTOR}</recovery_expression>
<name>Suspiciously small ({ITEM.VALUE3}) backups for {#BPCHOST}</name>
<priority>WARNING</priority>
</trigger_prototype>
<trigger_prototype>
<expression>{Template_App_BackupPC:backuppc.host[{#BPCHOST},enabled].last()}=1 and {Template_App_BackupPC:backuppc.host[{#BPCHOST},bkp].last()}&gt;4 and {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].last()} &gt; ({Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_q3].last()} + ({Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_q3].last()} - {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_q1].last()}) * 1.5) and {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].last()} &gt; {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_avg].last()}*{#BPC_TOO_BIG_FACTOR} and {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].dayofweek()} &lt;&gt; 7 and {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].dayofweek()} &lt;&gt; 1 and ({Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].dayofweek()} &lt;&gt; 2 or {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].time()} &gt; 060000)</expression>
<recovery_mode>RECOVERY_EXPRESSION</recovery_mode>
<recovery_expression>{Template_App_BackupPC:backuppc.host[{#BPCHOST},enabled].last()}=0 or {Template_App_BackupPC:backuppc.host[{#BPCHOST},bkp].last()}&lt;=4 or {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].last()} &lt;= ({Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_q3].last()} + ({Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_q3].last()} - {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_q1].last()}) * 1.5) or {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size].last()} &lt;= {Template_App_BackupPC:backuppc.host[{#BPCHOST},new_size_avg].last()}*{#BPC_TOO_BIG_FACTOR}</recovery_expression>
<name>Suspuciously big ({ITEM.VALUE3}) backup for {#BPCHOST}</name>
<priority>INFO</priority>
</trigger_prototype>
<trigger_prototype>
<expression>{Template_App_BackupPC:backuppc.host[{#BPCHOST},errors].last(0)}&gt;{#BPCMAXERROR} and {Template_App_BackupPC:backuppc.host[{#BPCHOST},enabled].last()}=1</expression>
<name>{ITEM.LASTVALUE1} xfer errors in last backup of {#BPCHOST}</name>
<name>{ITEM.LASTVALUE1} (xfer) in last backup of {#BPCHOST}</name>
<priority>WARNING</priority>
<manual_close>YES</manual_close>
</trigger_prototype>
</trigger_prototypes>
<graph_prototypes>
@ -704,6 +900,11 @@
</discovery_rule>
</discovery_rules>
<macros>
<macro>
<macro>{$BPC_SIZE_WARN_FROM_HOUR}</macro>
<value>080000</value>
<description>Size alerts will only start after this hour</description>
</macro>
<macro>
<macro>{$EXT_BACKUPS}</macro>
<value>0</value>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>4.2</version>
<date>2019-10-11T16:40:31Z</date>
<version>5.0</version>
<date>2021-06-19T12:07:47Z</date>
<groups>
<group>
<name>Templates</name>
@ -11,7 +11,6 @@
<template>
<template>Template_App_DRBD</template>
<name>Template_App_DRBD</name>
<description/>
<groups>
<group>
<name>Templates</name>
@ -25,70 +24,20 @@
<name>Storage</name>
</application>
</applications>
<items/>
<discovery_rules>
<discovery_rule>
<name>DRBD resources</name>
<type>0</type>
<snmp_community/>
<snmp_oid/>
<key>drbd.resource.discovery[]</key>
<delay>30m</delay>
<status>0</status>
<allowed_hosts/>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<filter>
<evaltype>0</evaltype>
<formula/>
<conditions/>
</filter>
<lifetime>2d</lifetime>
<description/>
<item_prototypes>
<item_prototype>
<name>DRBD: {#DRBD_RES_NAME} connexion status</name>
<type>0</type>
<snmp_community/>
<snmp_oid/>
<key>drbd.resource.status[{#DRBD_RES_NAME},cstate]</key>
<delay>5m</delay>
<history>180d</history>
<trends>0</trends>
<status>0</status>
<value_type>1</value_type>
<allowed_hosts/>
<units/>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<value_type>CHAR</value_type>
<applications>
<application>
<name>DRBD</name>
@ -97,61 +46,23 @@
<name>Storage</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<timeout>3s</timeout>
<url/>
<query_fields/>
<posts/>
<status_codes>200</status_codes>
<follow_redirects>1</follow_redirects>
<post_type>0</post_type>
<http_proxy/>
<headers/>
<retrieve_mode>0</retrieve_mode>
<request_method>1</request_method>
<output_format>0</output_format>
<allow_traps>0</allow_traps>
<ssl_cert_file/>
<ssl_key_file/>
<ssl_key_password/>
<verify_peer>0</verify_peer>
<verify_host>0</verify_host>
<application_prototypes/>
<master_item/>
<request_method>POST</request_method>
<trigger_prototypes>
<trigger_prototype>
<expression>{str(Connected)}=0 and {str(SyncSource)}=0 and&#13;
{str(SyncTarget)}=0</expression>
<name>DRBD: ({#DRBD_RES_NAME}): connexion is not established</name>
<priority>AVERAGE</priority>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
<item_prototype>
<name>DRBD: {#DRBD_RES_NAME} data status</name>
<type>0</type>
<snmp_community/>
<snmp_oid/>
<key>drbd.resource.status[{#DRBD_RES_NAME},dstate]</key>
<delay>5m</delay>
<history>180d</history>
<trends>0</trends>
<status>0</status>
<value_type>1</value_type>
<allowed_hosts/>
<units/>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<value_type>CHAR</value_type>
<applications>
<application>
<name>DRBD</name>
@ -160,61 +71,22 @@
<name>Storage</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<timeout>3s</timeout>
<url/>
<query_fields/>
<posts/>
<status_codes>200</status_codes>
<follow_redirects>1</follow_redirects>
<post_type>0</post_type>
<http_proxy/>
<headers/>
<retrieve_mode>0</retrieve_mode>
<request_method>1</request_method>
<output_format>0</output_format>
<allow_traps>0</allow_traps>
<ssl_cert_file/>
<ssl_key_file/>
<ssl_key_password/>
<verify_peer>0</verify_peer>
<verify_host>0</verify_host>
<application_prototypes/>
<master_item/>
<request_method>POST</request_method>
<trigger_prototypes>
<trigger_prototype>
<expression>{str(UpToDate)}=0</expression>
<name>DRBD ({#DRBD_RES_NAME}): data is not up to date</name>
<priority>AVERAGE</priority>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
<item_prototype>
<name>DRBD: {#DRBD_RES_NAME} role</name>
<type>0</type>
<snmp_community/>
<snmp_oid/>
<key>drbd.resource.status[{#DRBD_RES_NAME},role]</key>
<delay>5m</delay>
<history>180d</history>
<trends>0</trends>
<status>0</status>
<value_type>1</value_type>
<allowed_hosts/>
<units/>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<value_type>CHAR</value_type>
<applications>
<application>
<name>DRBD</name>
@ -223,113 +95,19 @@
<name>Storage</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<timeout>3s</timeout>
<url/>
<query_fields/>
<posts/>
<status_codes>200</status_codes>
<follow_redirects>1</follow_redirects>
<post_type>0</post_type>
<http_proxy/>
<headers/>
<retrieve_mode>0</retrieve_mode>
<request_method>1</request_method>
<output_format>0</output_format>
<allow_traps>0</allow_traps>
<ssl_cert_file/>
<ssl_key_file/>
<ssl_key_password/>
<verify_peer>0</verify_peer>
<verify_host>0</verify_host>
<application_prototypes/>
<master_item/>
<request_method>POST</request_method>
<trigger_prototypes>
<trigger_prototype>
<expression>{diff()}=1</expression>
<name>DRBD ({#DRBD_RES_NAME}) node role has changed</name>
<priority>AVERAGE</priority>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
</item_prototypes>
<trigger_prototypes>
<trigger_prototype>
<expression>{Template_App_DRBD:drbd.resource.status[{#DRBD_RES_NAME},dstate].str(UpToDate)}=0</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>DRBD ({#DRBD_RES_NAME}): data is not up to date</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>3</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies/>
<tags/>
</trigger_prototype>
<trigger_prototype>
<expression>{Template_App_DRBD:drbd.resource.status[{#DRBD_RES_NAME},role].diff()}=1</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>DRBD ({#DRBD_RES_NAME}) node role has changed</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>3</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies/>
<tags/>
</trigger_prototype>
<trigger_prototype>
<expression>{Template_App_DRBD:drbd.resource.status[{#DRBD_RES_NAME},cstate].str(Connected)}=0 and {Template_App_DRBD:drbd.resource.status[{#DRBD_RES_NAME},cstate].str(SyncSource)}=0 and&#13;
{Template_App_DRBD:drbd.resource.status[{#DRBD_RES_NAME},cstate].str(SyncTarget)}=0</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>DRBD: ({#DRBD_RES_NAME}): connexion is not established</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>3</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies/>
<tags/>
</trigger_prototype>
</trigger_prototypes>
<graph_prototypes/>
<host_prototypes/>
<jmx_endpoint/>
<timeout>3s</timeout>
<url/>
<query_fields/>
<posts/>
<status_codes>200</status_codes>
<follow_redirects>1</follow_redirects>
<post_type>0</post_type>
<http_proxy/>
<headers/>
<retrieve_mode>0</retrieve_mode>
<request_method>1</request_method>
<allow_traps>0</allow_traps>
<ssl_cert_file/>
<ssl_key_file/>
<ssl_key_password/>
<verify_peer>0</verify_peer>
<verify_host>0</verify_host>
<lld_macro_paths/>
<preprocessing/>
<master_item/>
<request_method>POST</request_method>
</discovery_rule>
</discovery_rules>
<httptests/>
<macros/>
<templates/>
<screens/>
<tags/>
</template>
</templates>
</zabbix_export>

View File

@ -0,0 +1,610 @@
zabbix_export:
version: '5.4'
date: '2022-01-20T13:55:05Z'
groups:
-
uuid: 7df96b18c230490a9a0a9e2307226338
name: Templates
templates:
-
uuid: 722c34dae28f471b992685f75b217e84
template: Template_App_Docker
name: Template_App_Docker
groups:
-
name: Templates
items:
-
uuid: b35116a368e94b0698951010ddb496b5
name: 'Docker: Number of paused container'
type: DEPENDENT
key: 'container.docker.check[global,ContainersPaused]'
delay: '0'
history: 30d
trends: 1095d
units: '!container(s)'
preprocessing:
-
type: JSONPATH
parameters:
- $.info.ContainersPaused
master_item:
key: 'container.docker.check[global]'
-
uuid: ff406b09a49f42ef80e004f7b8737c9b
name: 'Docker: Number of running container'
type: DEPENDENT
key: 'container.docker.check[global,ContainersRunning]'
delay: '0'
history: 30d
trends: 1095d
units: '!container(s)'
preprocessing:
-
type: JSONPATH
parameters:
- $.info.ContainersRunning
master_item:
key: 'container.docker.check[global]'
triggers:
-
uuid: 85e456243c714349b34ff6504d122004
expression: 'change(/Template_App_Docker/container.docker.check[global,ContainersRunning])=1'
name: 'Number of running containers changed to {ITEM.LASTVALUE1}'
priority: INFO
-
uuid: 69c12d97c6604c608fba4d2c0d4875bb
name: 'Docker: Number of stopped container'
type: DEPENDENT
key: 'container.docker.check[global,ContainersStopped]'
delay: '0'
history: 30d
trends: 1095d
units: '!container(s)'
preprocessing:
-
type: JSONPATH
parameters:
- $.info.ContainersStopped
master_item:
key: 'container.docker.check[global]'
-
uuid: c6831879964a4a3a90fc82530e6a0d43
name: 'Docker: Number of containers'
type: DEPENDENT
key: 'container.docker.check[global,Containers]'
delay: '0'
history: 30d
trends: 1095d
units: '!container(s)'
preprocessing:
-
type: JSONPATH
parameters:
- $.info.Containers
master_item:
key: 'container.docker.check[global]'
-
uuid: 1da51785c3d34faf8ba7ab17d0b46b38
name: 'Docker: Live restore status'
type: DEPENDENT
key: 'container.docker.check[global,LiveRestoreEnabled]'
delay: '0'
history: 7d
trends: '0'
value_type: CHAR
preprocessing:
-
type: JSONPATH
parameters:
- $.info.LiveRestoreEnabled
master_item:
key: 'container.docker.check[global]'
triggers:
-
uuid: 85a2fc38a6bb42e183de3d4687f466e8
expression: 'last(/Template_App_Docker/container.docker.check[global,LiveRestoreEnabled])<>"true" and {$DOCKER_WARN_NO_LIVE_RESTORE}=1'
name: 'Docker live restore isn''t enabled'
priority: WARNING
-
uuid: ab2d3bd636964a21b764b2f33f2e109e
name: 'Docker: server version'
type: DEPENDENT
key: 'container.docker.check[global,ServerVersion]'
delay: '0'
history: 15d
trends: '0'
value_type: CHAR
preprocessing:
-
type: JSONPATH
parameters:
- $.info.ServerVersion
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'container.docker.check[global]'
triggers:
-
uuid: 8c535ff0d73240c395226ee91a8096c4
expression: '(last(/Template_App_Docker/container.docker.check[global,ServerVersion])<>last(/Template_App_Docker/container.docker.check[global,ServerVersion],#2))=1'
name: 'Docker version changed ({ITEM.LASTVALUE1})'
priority: WARNING
-
uuid: d5c424dc767c4a5ea1ee441e76770411
name: 'Docker global info'
key: 'container.docker.check[global]'
delay: 5m
history: '0'
trends: '0'
value_type: TEXT
discovery_rules:
-
uuid: e459f638e15f495db3e4a9060e60f7c8
name: 'Docker: container discovery'
key: 'container.docker.discovery[containers]'
delay: 15m
lifetime: 7d
item_prototypes:
-
uuid: 7f3fddee7aed48c8acc26e9aa98df298
name: 'Docker: Container {#DOCKER_CONTAINER_NAME}: Disk IO Read'
type: DEPENDENT
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME},BlockIORead]'
delay: '0'
history: 30d
trends: 1095d
units: B/s
preprocessing:
-
type: JSONPATH
parameters:
- $.stats.BlockIORead
-
type: CHANGE_PER_SECOND
parameters:
- ''
master_item:
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME}]'
-
uuid: 27f4e3e3a33c412ead03200de17bc9b5
name: 'Docker: Container {#DOCKER_CONTAINER_NAME}: Disk IO Write'
type: DEPENDENT
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME},BlockIOWrite]'
delay: '0'
history: 30d
trends: 1095d
units: B/s
preprocessing:
-
type: JSONPATH
parameters:
- $.stats.BlockIOWrite
-
type: CHANGE_PER_SECOND
parameters:
- ''
master_item:
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME}]'
-
uuid: f59ee387b12740fc90ff6d990422e92d
name: 'Docker: Container {#DOCKER_CONTAINER_NAME}: CPU'
type: DEPENDENT
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME},CPUPerc]'
delay: '0'
history: 30d
trends: 1095d
value_type: FLOAT
units: '%'
preprocessing:
-
type: JSONPATH
parameters:
- $.stats.CPUPerc
master_item:
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME}]'
trigger_prototypes:
-
uuid: d2bdccc7bf8a49c6a2c584a5394a0c27
expression: 'avg(/Template_App_Docker/container.docker.check[container,{#DOCKER_CONTAINER_NAME},CPUPerc],1h)>{$DOCKER_CPU_PCT_WARN:"{#DOCKER_CONTAINER_NAME}"}'
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: 'avg(/Template_App_Docker/container.docker.check[container,{#DOCKER_CONTAINER_NAME},CPUPerc],1h)<({$DOCKER_CPU_PCT_WARN:"{#DOCKER_CONTAINER_NAME}"}-2) or avg(/Template_App_Docker/container.docker.check[container,{#DOCKER_CONTAINER_NAME},CPUPerc],5m)<({$DOCKER_CPU_PCT_WARN:"{#DOCKER_CONTAINER_NAME}"}/3)'
name: 'Container {#DOCKER_CONTAINER_NAME} CPU usage is {ITEM.VALUE1}'
priority: INFO
-
uuid: f56ddbaef3af4fa898ae2403a812db3c
name: 'Docker: Container {#DOCKER_CONTAINER_NAME}: Dead'
type: DEPENDENT
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME},Dead]'
delay: '0'
history: 7d
trends: '0'
value_type: CHAR
preprocessing:
-
type: JSONPATH
parameters:
- $.inspect.State.Dead
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME}]'
-
uuid: e09f311feb1749cc88e8c51c8425c324
name: 'Docker: Container {#DOCKER_CONTAINER_NAME}: Error'
type: DEPENDENT
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME},Error]'
delay: '0'
history: 7d
trends: '0'
value_type: CHAR
preprocessing:
-
type: JSONPATH
parameters:
- $.inspect.State.Error
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME}]'
-
uuid: b75ac0b193d2451e8ee3ce0950b7b07a
name: 'Docker: Container {#DOCKER_CONTAINER_NAME}: Image'
type: DEPENDENT
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME},Image]'
delay: '0'
history: 7d
trends: '0'
value_type: CHAR
preprocessing:
-
type: JSONPATH
parameters:
- $.inspect.Config.Image
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME}]'
-
uuid: ba301501bbec40e6add5a47d2fd0ee15
name: 'Docker: Container {#DOCKER_CONTAINER_NAME}: Memory usage'
type: DEPENDENT
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME},MemCurrent]'
delay: '0'
history: 30d
trends: 1095d
units: B
preprocessing:
-
type: JSONPATH
parameters:
- $.stats.MemCurrent
master_item:
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME}]'
-
uuid: 5895cddf57fd4b5e8917593cba941491
name: 'Docker: Container {#DOCKER_CONTAINER_NAME}: Memory limit'
type: DEPENDENT
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME},MemLimit]'
delay: '0'
history: 30d
trends: 1095d
units: B
preprocessing:
-
type: JSONPATH
parameters:
- $.stats.MemLimit
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME}]'
-
uuid: 640bce04f3fc483fa495ac72208effa7
name: 'Docker: Container {#DOCKER_CONTAINER_NAME}: Memory used (%)'
type: DEPENDENT
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME},MemPerc]'
delay: '0'
history: 30d
trends: 1095d
value_type: FLOAT
units: '%'
preprocessing:
-
type: JSONPATH
parameters:
- $.stats.MemPerc
master_item:
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME}]'
trigger_prototypes:
-
uuid: 9fdd469b0866409ca7889288eb5f229a
expression: 'last(/Template_App_Docker/container.docker.check[container,{#DOCKER_CONTAINER_NAME},MemPerc])>{$DOCKER_MEM_PCT_WARN:"{#DOCKER_CONTAINER_NAME}"}'
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: 'last(/Template_App_Docker/container.docker.check[container,{#DOCKER_CONTAINER_NAME},MemPerc])<({$DOCKER_MEM_PCT_WARN:"{#DOCKER_CONTAINER_NAME}"}-2)'
name: 'Container {#DOCKER_CONTAINER_NAME} memory usage is at {ITEM.LASTVALUE1}'
priority: AVERAGE
manual_close: 'YES'
-
uuid: eb58fb55bc0442319650e32a8ba1faf4
name: 'Docker: Container {#DOCKER_CONTAINER_NAME}: Network in'
type: DEPENDENT
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME},NetIOIn]'
delay: '0'
history: 30d
trends: 1095d
units: b/s
preprocessing:
-
type: JSONPATH
parameters:
- $.stats.NetIOIn
-
type: CHANGE_PER_SECOND
parameters:
- ''
-
type: MULTIPLIER
parameters:
- '8'
master_item:
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME}]'
-
uuid: 6a97e94be7d1432fb11a92072ea9e55f
name: 'Docker: Container {#DOCKER_CONTAINER_NAME}: Network out'
type: DEPENDENT
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME},NetIOOut]'
delay: '0'
history: 30d
trends: 1095d
units: b/s
preprocessing:
-
type: JSONPATH
parameters:
- $.stats.NetIOOut
-
type: CHANGE_PER_SECOND
parameters:
- ''
-
type: MULTIPLIER
parameters:
- '8'
master_item:
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME}]'
-
uuid: 7be56a29b2464c5e96c2f4f2b3e02fba
name: 'Docker: Container {#DOCKER_CONTAINER_NAME}: OOMKilled'
type: DEPENDENT
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME},OOMKilled]'
delay: '0'
history: 7d
trends: '0'
value_type: CHAR
preprocessing:
-
type: JSONPATH
parameters:
- $.inspect.State.OOMKilled
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME}]'
-
uuid: a5ed78ba8acf43a488b3833d14e39381
name: 'Docker: Container {#DOCKER_CONTAINER_NAME}: Number of processes'
type: DEPENDENT
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME},PIDs]'
delay: '0'
history: 30d
trends: 1095d
units: '!process(es)'
preprocessing:
-
type: JSONPATH
parameters:
- $.stats.PIDs
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME}]'
-
uuid: 1213e0b7fc824442b50ab4ff4cd1047b
name: 'Docker: Container {#DOCKER_CONTAINER_NAME}: Restarting'
type: DEPENDENT
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME},Restarting]'
delay: '0'
history: 7d
trends: '0'
value_type: CHAR
preprocessing:
-
type: JSONPATH
parameters:
- $.inspect.State.Restarting
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME}]'
-
uuid: 418b35e93f114be986ecdd5a9d259283
name: 'Docker: Container {#DOCKER_CONTAINER_NAME}: Status'
type: DEPENDENT
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME},Status]'
delay: '0'
history: 7d
trends: '0'
value_type: CHAR
preprocessing:
-
type: JSONPATH
parameters:
- $.inspect.State.Status
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME}]'
trigger_prototypes:
-
uuid: 45e35825ed184b0290d1bc1ed27e48e4
expression: 'find(/Template_App_Docker/container.docker.check[container,{#DOCKER_CONTAINER_NAME},Status],,"regexp","^(running|exited)$")<>1'
name: 'Container {#DOCKER_CONTAINER_NAME} is {ITEM.LASTVALUE1}'
priority: WARNING
manual_close: 'YES'
-
uuid: ab2c34de197f4ea197e607604c936f34
name: 'Docker: Container {#DOCKER_CONTAINER_NAME}: Uptime'
type: DEPENDENT
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME},Uptime]'
delay: '0'
history: 30d
trends: 1095d
units: s
preprocessing:
-
type: JSONPATH
parameters:
- $.stats.Uptime
master_item:
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME}]'
-
uuid: b232a5b3aedd4072a56460dd041579b1
name: 'Docker: container {#DOCKER_CONTAINER_NAME}: Info'
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME}]'
delay: 5m
history: '0'
trends: '0'
value_type: TEXT
trigger_prototypes:
-
uuid: 57d9a11b38b246539a82bf4ba1a79a98
expression: 'last(/Template_App_Docker/container.docker.check[container,{#DOCKER_CONTAINER_NAME},Uptime])<{$DOCKER_UPTIME_WARN:"{#DOCKER_CONTAINER_NAME}"} and last(/Template_App_Docker/container.docker.check[container,{#DOCKER_CONTAINER_NAME},Status],#2)="running" and last(/Template_App_Docker/container.docker.check[container,{#DOCKER_CONTAINER_NAME},Status])="running"'
name: 'Container {#DOCKER_CONTAINER_NAME} has just restarted'
priority: INFO
-
uuid: ce3cc3148fa24c6097cbf38b47e9e655
expression: 'last(/Template_App_Docker/container.docker.check[container,{#DOCKER_CONTAINER_NAME},Uptime])<{$DOCKER_UPTIME_WARN:"{#DOCKER_CONTAINER_NAME}"} and last(/Template_App_Docker/container.docker.check[container,{#DOCKER_CONTAINER_NAME},Status],#2)="exited" and last(/Template_App_Docker/container.docker.check[container,{#DOCKER_CONTAINER_NAME},Status])="running"'
name: 'Container {#DOCKER_CONTAINER_NAME} has just started'
priority: INFO
-
uuid: ebdea3b26c624714811124fe4681ccec
expression: 'max(/Template_App_Docker/container.docker.check[container,{#DOCKER_CONTAINER_NAME},Uptime],20m)<{$DOCKER_UPTIME_WARN:"{#DOCKER_CONTAINER_NAME}"} and last(/Template_App_Docker/container.docker.check[container,{#DOCKER_CONTAINER_NAME},Uptime])>0 and last(/Template_App_Docker/container.docker.check[container,{#DOCKER_CONTAINER_NAME},Status])="running" and last(/Template_App_Docker/container.docker.check[container,{#DOCKER_CONTAINER_NAME},Status],#2)="running" and last(/Template_App_Docker/container.docker.check[container,{#DOCKER_CONTAINER_NAME},Status],#3)="running"'
name: 'Container {#DOCKER_CONTAINER_NAME} seems to restart in a loop'
priority: AVERAGE
manual_close: 'YES'
graph_prototypes:
-
uuid: 4a9aa378970045399303dcead39c1e53
name: 'Docker: Container {#DOCKER_CONTAINER_NAME}: CPU'
ymin_type_1: FIXED
graph_items:
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: F63100
item:
host: Template_App_Docker
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME},CPUPerc]'
-
uuid: 7cd7cd8fd24d492ab7995a882b7bf9af
name: 'Docker: Container {#DOCKER_CONTAINER_NAME}: Disk IO'
graph_items:
-
sortorder: '1'
drawtype: FILLED_REGION
color: FFAB91
item:
host: Template_App_Docker
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME},BlockIORead]'
-
sortorder: '2'
drawtype: FILLED_REGION
color: A5D6A7
item:
host: Template_App_Docker
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME},BlockIOWrite]'
-
uuid: 0fec757ff2f34e4fbab3be8ea455bc5f
name: 'Docker: Container {#DOCKER_CONTAINER_NAME}: Memory'
ymin_type_1: FIXED
graph_items:
-
sortorder: '1'
color: 2774A4
item:
host: Template_App_Docker
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME},MemCurrent]'
-
uuid: 948dccce10c54510810a64612933ca89
name: 'Docker: Container {#DOCKER_CONTAINER_NAME}: Network'
graph_items:
-
sortorder: '1'
drawtype: FILLED_REGION
color: B39DDB
item:
host: Template_App_Docker
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME},NetIOIn]'
-
sortorder: '2'
drawtype: FILLED_REGION
color: 80DEEA
item:
host: Template_App_Docker
key: 'container.docker.check[container,{#DOCKER_CONTAINER_NAME},NetIOOut]'
macros:
-
macro: '{$DOCKER_CPU_PCT_WARN}'
value: '90'
-
macro: '{$DOCKER_MEM_PCT_WARN}'
value: '85'
-
macro: '{$DOCKER_UPTIME_WARN}'
value: '300'
-
macro: '{$DOCKER_WARN_NO_LIVE_RESTORE}'
value: '1'
graphs:
-
uuid: 9c9aba9c46e145c7a8acd208edb1d147
name: 'Docker: Number of containers'
type: STACKED
graph_items:
-
sortorder: '1'
color: 1A7C11
item:
host: Template_App_Docker
key: 'container.docker.check[global,ContainersPaused]'
-
sortorder: '2'
color: F63100
item:
host: Template_App_Docker
key: 'container.docker.check[global,ContainersRunning]'
-
sortorder: '3'
color: 2774A4
item:
host: Template_App_Docker
key: 'container.docker.check[global,ContainersStopped]'

View File

@ -0,0 +1,759 @@
zabbix_export:
version: '5.4'
date: '2021-10-19T12:29:52Z'
groups:
-
uuid: 7df96b18c230490a9a0a9e2307226338
name: Templates
templates:
-
uuid: 3a658cb77f26469a8a114b1bcd4734e9
template: Template_App_Elasticsearch
name: Template_App_Elasticsearch
groups:
-
name: Templates
items:
-
uuid: 1957d2e7393348f9ae73bfc07c1122a3
name: 'ES Cluster informations'
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},cluster]'
delay: 3m
history: '0'
trends: '0'
value_type: TEXT
tags:
-
tag: Application
value: Elasticsearch
-
uuid: fec408ef6d3249a885a3f9842016ccd4
name: 'ES: Cluster name'
type: DEPENDENT
key: 'elasticsearch.cluster[cluster_name]'
delay: '0'
history: 30d
trends: '0'
value_type: CHAR
preprocessing:
-
type: JSONPATH
parameters:
- $.cluster_name
-
type: DISCARD_UNCHANGED
parameters:
- ''
master_item:
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},cluster]'
tags:
-
tag: Application
value: Elasticsearch
-
uuid: 286f9eb4d1504704999abd6a98b09a5c
name: 'ES: Number of indices'
type: DEPENDENT
key: 'elasticsearch.cluster[indices.count]'
delay: '0'
history: 60d
trends: 1095d
units: '!indice(s)'
preprocessing:
-
type: JSONPATH
parameters:
- $.indices.count
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},cluster]'
tags:
-
tag: Application
value: Elasticsearch
triggers:
-
uuid: dd7bc1621b994f24917d5beb4c07e17f
expression: 'abs(change(/Template_App_Elasticsearch/elasticsearch.cluster[indices.count]))>0'
recovery_mode: NONE
name: 'Number of indices has changed to {ITEM.LASTVALUE1}'
priority: INFO
manual_close: 'YES'
-
uuid: 8b990ab728304cd98d264fdbbe919795
name: 'ES: Number of documents'
type: DEPENDENT
key: 'elasticsearch.cluster[indices.docs.count]'
delay: '0'
history: 60d
trends: 1095d
units: '!document(s)'
preprocessing:
-
type: JSONPATH
parameters:
- $.indices.docs.count
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},cluster]'
tags:
-
tag: Application
value: Elasticsearch
-
uuid: 4d1b8e4e358749739e3439bf9489b074
name: 'ES: Number of deleted documents'
type: DEPENDENT
key: 'elasticsearch.cluster[indices.docs.deleted]'
delay: '0'
history: 60d
trends: 1095d
units: '!document(s)'
preprocessing:
-
type: JSONPATH
parameters:
- $.indices.docs.deleted
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},cluster]'
tags:
-
tag: Application
value: Elasticsearch
-
uuid: 0f472265bad44e849866d87de2c50474
name: 'ES: Number of primary shards'
type: DEPENDENT
key: 'elasticsearch.cluster[indices.shards.primaries]'
delay: '0'
history: 60d
trends: 1095d
units: '!shard(s)'
preprocessing:
-
type: JSONPATH
parameters:
- $.indices.shards.primaries
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},cluster]'
tags:
-
tag: Application
value: Elasticsearch
-
uuid: 7118fffe2a864915947ce19570885993
name: 'ES: Number of replication shards'
type: DEPENDENT
key: 'elasticsearch.cluster[indices.shards.replication]'
delay: '0'
history: 60d
trends: 1095d
units: '!shard(s)'
preprocessing:
-
type: JSONPATH
parameters:
- $.indices.shards.replication
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},cluster]'
tags:
-
tag: Application
value: Elasticsearch
-
uuid: 019eb7caa2ff45aa8aad4da89b340a54
name: 'ES: Number of shards'
type: DEPENDENT
key: 'elasticsearch.cluster[indices.shards.total]'
delay: '0'
history: 60d
trends: 1095d
units: '!shard(s)'
preprocessing:
-
type: JSONPATH
parameters:
- $.indices.shards.total
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},cluster]'
tags:
-
tag: Application
value: Elasticsearch
-
uuid: 8f0660a8b80041d987a91986608a43d2
name: 'ES: Store size'
type: DEPENDENT
key: 'elasticsearch.cluster[indices.store.size]'
delay: '0'
history: 60d
trends: 1095d
units: B
preprocessing:
-
type: JSONPATH
parameters:
- $.indices.store.size_in_bytes
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},cluster]'
tags:
-
tag: Application
value: Elasticsearch
-
uuid: 854e270d75ef4c6fad22ebd553f6438e
name: 'ES: Number of data nodes'
type: DEPENDENT
key: 'elasticsearch.cluster[nodes.data]'
delay: '0'
history: 60d
trends: 1095d
units: '!node(s)'
preprocessing:
-
type: JSONPATH
parameters:
- $.nodes.count.data
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},cluster]'
tags:
-
tag: Application
value: Elasticsearch
-
uuid: 52f72a68d734465b8422fb4e3ad084a7
name: 'ES: Number of failed nodes'
type: DEPENDENT
key: 'elasticsearch.cluster[nodes.failed]'
delay: '0'
history: 60d
trends: 1095d
units: '!node(s)'
preprocessing:
-
type: JSONPATH
parameters:
- $._nodes.failed
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},cluster]'
tags:
-
tag: Application
value: Elasticsearch
triggers:
-
uuid: c188a92cd4444d7f8fe4c635cf35e656
expression: 'last(/Template_App_Elasticsearch/elasticsearch.cluster[nodes.failed])>0'
name: 'ES cluster has {ITEM.LASTVALUE1} failed node(s)'
priority: AVERAGE
-
uuid: 94de965d25ed41cd8d5ef367e9a22497
name: 'ES: Available space'
type: DEPENDENT
key: 'elasticsearch.cluster[nodes.fs.available_in_bytes]'
delay: '0'
history: 60d
trends: 1095d
units: B
preprocessing:
-
type: JSONPATH
parameters:
- $.nodes.fs.available_in_bytes
master_item:
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},cluster]'
tags:
-
tag: Application
value: Elasticsearch
-
uuid: 376c2cd6bcfa4a21867411af6d84f5d1
name: 'ES: Total space'
type: DEPENDENT
key: 'elasticsearch.cluster[nodes.fs.total_in_bytes]'
delay: '0'
history: 60d
trends: 1095d
units: B
preprocessing:
-
type: JSONPATH
parameters:
- $.nodes.fs.total_in_bytes
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},cluster]'
tags:
-
tag: Application
value: Elasticsearch
-
uuid: 20a0526ae5054c808a95c4cc9b3356eb
name: 'ES: Number of master nodes'
type: DEPENDENT
key: 'elasticsearch.cluster[nodes.master]'
delay: '0'
history: 60d
trends: 1095d
units: '!node(s)'
preprocessing:
-
type: JSONPATH
parameters:
- $.nodes.count.master
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},cluster]'
tags:
-
tag: Application
value: Elasticsearch
-
uuid: 0acd45bc9952407ab582689b0b483149
name: 'ES: Number of working nodes'
type: DEPENDENT
key: 'elasticsearch.cluster[nodes.successfull]'
delay: '0'
history: 60d
trends: 1095d
units: '!node(s)'
preprocessing:
-
type: JSONPATH
parameters:
- $._nodes.successful
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},cluster]'
tags:
-
tag: Application
value: Elasticsearch
-
uuid: 8ef89bc0bcde44ed89a361a9541f7b85
name: 'ES: Number of nodes'
type: DEPENDENT
key: 'elasticsearch.cluster[nodes.total]'
delay: '0'
history: 60d
trends: 1095d
units: '!node(s)'
preprocessing:
-
type: JSONPATH
parameters:
- $._nodes.total
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},cluster]'
tags:
-
tag: Application
value: Elasticsearch
triggers:
-
uuid: 82cad93d736248e8b520d25e09cc0fd9
expression: 'abs(change(/Template_App_Elasticsearch/elasticsearch.cluster[nodes.total]))>0'
recovery_mode: NONE
name: 'Number of nodes has changed to {ITEM.LASTVALUE1}'
priority: INFO
manual_close: 'YES'
-
uuid: 4782a3f38fb14c16ba2066c3504727da
name: 'ES: Cluster status'
type: DEPENDENT
key: 'elasticsearch.cluster[status]'
delay: '0'
history: 30d
trends: '0'
value_type: CHAR
preprocessing:
-
type: JSONPATH
parameters:
- $.status
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 10m
master_item:
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},cluster]'
tags:
-
tag: Application
value: Elasticsearch
triggers:
-
uuid: b86396f5fcca4dfe825f8ae022ef8edf
expression: 'find(/Template_App_Elasticsearch/elasticsearch.cluster[status],,"like","red")=1'
name: 'ES cluster in red status'
priority: HIGH
-
uuid: 275c27ab25874666a1cfd8f36df549d0
expression: 'find(/Template_App_Elasticsearch/elasticsearch.cluster[status],,"like","green")=0'
name: 'ES cluster is in {ITEM.LASTVALUE1} status'
priority: WARNING
manual_close: 'YES'
dependencies:
-
name: 'ES cluster in red status'
expression: 'find(/Template_App_Elasticsearch/elasticsearch.cluster[status],,"like","red")=1'
-
uuid: c54941e310124d4881bcbb76912a72c9
expression: 'nodata(/Template_App_Elasticsearch/elasticsearch.cluster[status],30m)=1'
name: 'No data for Elasticsearch cluster monitoring since 10m'
priority: WARNING
discovery_rules:
-
uuid: bf3408829ed946a99e0c9640698a2eed
name: 'Indices discovery'
key: 'elasticsearch.discovery[{$ES_URL},{$ES_USER},{$ES_PASS},indices]'
delay: 30m
lifetime: 7d
item_prototypes:
-
uuid: 67125ce8f0924ee0a124f06d40715005
name: 'ES: Index: {#ES_INDEX_NAME}: Info'
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},index,{#ES_INDEX_NAME}]'
delay: 3m
history: '0'
trends: '0'
value_type: TEXT
tags:
-
tag: Application
value: Elasticsearch
-
uuid: d457ef885ca442c58fb3c336f2dd8f1d
name: 'ES: Index: {#ES_INDEX_NAME}: Number of active primary shards'
type: DEPENDENT
key: 'elasticsearch.index[{#ES_INDEX_NAME},active_primary_shards]'
delay: '0'
history: 60d
trends: 1095d
units: '!shard(s)'
preprocessing:
-
type: JSONPATH
parameters:
- $.active_primary_shards
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},index,{#ES_INDEX_NAME}]'
tags:
-
tag: Application
value: Elasticsearch
-
uuid: 465dbc25a40948f392287f784aea1bbe
name: 'ES: Index: {#ES_INDEX_NAME}: Number of active shards'
type: DEPENDENT
key: 'elasticsearch.index[{#ES_INDEX_NAME},active_shards]'
delay: '0'
history: 60d
trends: 1095d
units: '!shard(s)'
preprocessing:
-
type: JSONPATH
parameters:
- $.active_shards
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},index,{#ES_INDEX_NAME}]'
tags:
-
tag: Application
value: Elasticsearch
-
uuid: 58c0a433f7494045a1aac59586893415
name: 'ES: Index: {#ES_INDEX_NAME}: Number of replicas'
type: DEPENDENT
key: 'elasticsearch.index[{#ES_INDEX_NAME},number_of_replicas]'
delay: '0'
history: 60d
trends: 1095d
preprocessing:
-
type: JSONPATH
parameters:
- $.number_of_replicas
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},index,{#ES_INDEX_NAME}]'
tags:
-
tag: Application
value: Elasticsearch
-
uuid: 03c1b057648c4e96937191731206b1ac
name: 'ES: Index: {#ES_INDEX_NAME}: Number of shards'
type: DEPENDENT
key: 'elasticsearch.index[{#ES_INDEX_NAME},number_of_shards]'
delay: '0'
history: 60d
trends: 1095d
units: '!shard(s)'
preprocessing:
-
type: JSONPATH
parameters:
- $.number_of_shards
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},index,{#ES_INDEX_NAME}]'
tags:
-
tag: Application
value: Elasticsearch
-
uuid: a13865f166344478ae5e3ea02962b8e2
name: 'ES: Index: {#ES_INDEX_NAME}: Number of relocating shards'
type: DEPENDENT
key: 'elasticsearch.index[{#ES_INDEX_NAME},relocating_shards]'
delay: '0'
history: 60d
trends: 1095d
units: '!shard(s)'
preprocessing:
-
type: JSONPATH
parameters:
- $.relocating_shards
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 1h
master_item:
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},index,{#ES_INDEX_NAME}]'
tags:
-
tag: Application
value: Elasticsearch
-
uuid: ba3dda72f4144a989e276b0d13c38536
name: 'ES: Index: {#ES_INDEX_NAME}: Status'
type: DEPENDENT
key: 'elasticsearch.index[{#ES_INDEX_NAME},status]'
delay: '0'
history: 30d
trends: '0'
value_type: CHAR
preprocessing:
-
type: JSONPATH
parameters:
- $.status
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 10m
master_item:
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},index,{#ES_INDEX_NAME}]'
tags:
-
tag: Application
value: Elasticsearch
trigger_prototypes:
-
uuid: baeff34841114b31883f0b7e017357a0
expression: 'find(/Template_App_Elasticsearch/elasticsearch.index[{#ES_INDEX_NAME},status],,"like","red")=1'
name: 'ES index {#ES_INDEX_NAME} is in red status'
priority: HIGH
manual_close: 'YES'
-
uuid: 91d45c74b96049158644dc2c4bdc418e
expression: 'find(/Template_App_Elasticsearch/elasticsearch.index[{#ES_INDEX_NAME},status],,"like","green")=0'
name: 'ES index {#ES_INDEX_NAME} is in {ITEM.LASTVALUE1} status'
priority: WARNING
manual_close: 'YES'
dependencies:
-
name: 'ES index {#ES_INDEX_NAME} is in red status'
expression: 'find(/Template_App_Elasticsearch/elasticsearch.index[{#ES_INDEX_NAME},status],,"like","red")=1'
-
uuid: 421078e2f66f4fe787a710c10eb45419
expression: 'nodata(/Template_App_Elasticsearch/elasticsearch.index[{#ES_INDEX_NAME},status],30m)=1'
name: 'No data for Elasticsearch index {#ES_INDEX_NAME} monitoring since 10m'
priority: WARNING
manual_close: 'YES'
dependencies:
-
name: 'No data for Elasticsearch cluster monitoring since 10m'
expression: 'nodata(/Template_App_Elasticsearch/elasticsearch.cluster[status],30m)=1'
-
uuid: 9912e675734d42e7b3810db51a9c13de
name: 'Nodes discovery'
key: 'elasticsearch.discovery[{$ES_URL},{$ES_USER},{$ES_PASS},nodes]'
delay: 2h
lifetime: 7d
item_prototypes:
-
uuid: 70e411ebd3de4f79936ec65ad4b3e41a
name: 'ES: Node {#ES_NODE_NAME} ({#ES_NODE_ID}): Info'
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},node,{#ES_NODE_ID}]'
delay: 5m
history: '0'
trends: '0'
value_type: TEXT
tags:
-
tag: Application
value: Elasticsearch
-
uuid: 0b7eed934ccf4e90b95daced49c7ccde
name: 'ES: Node {#ES_NODE_NAME} ({#ES_NODE_ID}): Uptime'
type: DEPENDENT
key: 'elasticsearch.node[{#ES_NODE_ID},jvm.start_time_in_millis]'
delay: '0'
history: 30d
trends: 1095d
units: ms
preprocessing:
-
type: JSONPATH
parameters:
- $.jvm.start_time_in_millis
master_item:
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},node,{#ES_NODE_ID}]'
tags:
-
tag: Application
value: Elasticsearch
trigger_prototypes:
-
uuid: e2b5fac004e240e1b381a0f3ce17db4f
expression: 'last(/Template_App_Elasticsearch/elasticsearch.node[{#ES_NODE_ID},jvm.start_time_in_millis])<600000'
name: 'ES restarted recently'
priority: INFO
manual_close: 'YES'
-
uuid: c335b6ee20d8497393125f9b1a4f7157
name: 'ES: Node {#ES_NODE_NAME} ({#ES_NODE_ID}): ES version'
type: DEPENDENT
key: 'elasticsearch.node[{#ES_NODE_ID},version]'
delay: '0'
history: 30d
trends: '0'
value_type: CHAR
preprocessing:
-
type: JSONPATH
parameters:
- $.version
-
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 6h
master_item:
key: 'elasticsearch.check[{$ES_URL},{$ES_USER},{$ES_PASS},node,{#ES_NODE_ID}]'
tags:
-
tag: Application
value: Elasticsearch
trigger_prototypes:
-
uuid: 15b5d7f22ca2422f9f79f6ee0196d38e
expression: 'last(/Template_App_Elasticsearch/elasticsearch.node[{#ES_NODE_ID},version],#1)<>last(/Template_App_Elasticsearch/elasticsearch.node[{#ES_NODE_ID},version],#2)'
recovery_mode: NONE
name: 'ES version changed to {ITEM.LASTVALUE1} on node {#ES_NODE_NAME} ({#ES_NODE_ID})'
priority: INFO
manual_close: 'YES'
macros:
-
macro: '{$ES_PASS}'
-
macro: '{$ES_SPACE_PCT_CRIT}'
value: '88'
-
macro: '{$ES_SPACE_PCT_WARN}'
value: '78'
-
macro: '{$ES_URL}'
value: 'http://localhost:9200'
-
macro: '{$ES_USER}'
triggers:
-
uuid: e5ff617704b047e2814469075a1a9e38
expression: '(100*last(/Template_App_Elasticsearch/elasticsearch.cluster[nodes.fs.available_in_bytes])/last(/Template_App_Elasticsearch/elasticsearch.cluster[nodes.fs.total_in_bytes]))<(100-{$ES_SPACE_PCT_WARN})'
name: 'Low free disk space'
priority: WARNING
dependencies:
-
name: 'Very low free disk space'
expression: '(100*last(/Template_App_Elasticsearch/elasticsearch.cluster[nodes.fs.available_in_bytes])/last(/Template_App_Elasticsearch/elasticsearch.cluster[nodes.fs.total_in_bytes]))<(100-{$ES_SPACE_PCT_CRIT})'
-
uuid: c6dbde1d2a844e338bb05dee6f59b114
expression: '(100*last(/Template_App_Elasticsearch/elasticsearch.cluster[nodes.fs.available_in_bytes])/last(/Template_App_Elasticsearch/elasticsearch.cluster[nodes.fs.total_in_bytes]))<(100-{$ES_SPACE_PCT_CRIT})'
name: 'Very low free disk space'
priority: HIGH
graphs:
-
uuid: 83738984fe6f4ab1b5a71e150c248ae4
name: 'ES: Storage size'
graph_items:
-
drawtype: GRADIENT_LINE
color: 1A7C11
item:
host: Template_App_Elasticsearch
key: 'elasticsearch.cluster[indices.store.size]'

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>4.2</version>
<date>2019-10-11T16:47:18Z</date>
<version>5.0</version>
<date>2021-06-19T12:08:07Z</date>
<groups>
<group>
<name>Templates</name>
@ -11,7 +11,6 @@
<template>
<template>Template_App_GlusterFS</template>
<name>Template_App_GlusterFS</name>
<description/>
<groups>
<group>
<name>Templates</name>
@ -28,34 +27,10 @@
<items>
<item>
<name>GlusterFS: memory used by gluster processes</name>
<type>0</type>
<snmp_community/>
<snmp_oid/>
<key>proc.mem[glusterfs]</key>
<delay>5m</delay>
<history>90d</history>
<trends>1825d</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<trends>730d</trends>
<units>B</units>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>Gluster</name>
@ -64,60 +39,13 @@
<name>Storage</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<timeout>3s</timeout>
<url/>
<query_fields/>
<posts/>
<status_codes>200</status_codes>
<follow_redirects>1</follow_redirects>
<post_type>0</post_type>
<http_proxy/>
<headers/>
<retrieve_mode>0</retrieve_mode>
<request_method>1</request_method>
<output_format>0</output_format>
<allow_traps>0</allow_traps>
<ssl_cert_file/>
<ssl_key_file/>
<ssl_key_password/>
<verify_peer>0</verify_peer>
<verify_host>0</verify_host>
<master_item/>
<request_method>POST</request_method>
</item>
<item>
<name>GlusterFS: number of processes</name>
<type>0</type>
<snmp_community/>
<snmp_oid/>
<key>proc.num[glusterfs]</key>
<delay>5m</delay>
<history>90d</history>
<trends>1825d</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units/>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<trends>730d</trends>
<applications>
<application>
<name>Gluster</name>
@ -126,94 +54,28 @@
<name>Storage</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<timeout>3s</timeout>
<url/>
<query_fields/>
<posts/>
<status_codes>200</status_codes>
<follow_redirects>1</follow_redirects>
<post_type>0</post_type>
<http_proxy/>
<headers/>
<retrieve_mode>0</retrieve_mode>
<request_method>1</request_method>
<output_format>0</output_format>
<allow_traps>0</allow_traps>
<ssl_cert_file/>
<ssl_key_file/>
<ssl_key_password/>
<verify_peer>0</verify_peer>
<verify_host>0</verify_host>
<master_item/>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{last()}&lt;1</expression>
<name>GlusterFS: No gluster process runing</name>
<priority>HIGH</priority>
</trigger>
</triggers>
</item>
</items>
<discovery_rules>
<discovery_rule>
<name>GlusterFS: peer discovery</name>
<type>0</type>
<snmp_community/>
<snmp_oid/>
<key>gluster.discovery[peers]</key>
<delay>2h</delay>
<status>0</status>
<allowed_hosts/>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<filter>
<evaltype>0</evaltype>
<formula/>
<conditions/>
</filter>
<lifetime>30d</lifetime>
<description/>
<item_prototypes>
<item_prototype>
<name>GlusterFS peer: {#GLUSTER_PEER_UUID} ({#GLUSTER_PEER_HOST}) status</name>
<type>0</type>
<snmp_community/>
<snmp_oid/>
<key>gluster.peer.status[{#GLUSTER_PEER_UUID}]</key>
<delay>633s</delay>
<history>90d</history>
<trends>0</trends>
<status>0</status>
<value_type>1</value_type>
<allowed_hosts/>
<units/>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<value_type>CHAR</value_type>
<applications>
<application>
<name>Gluster</name>
@ -222,136 +84,29 @@
<name>Storage</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<timeout>3s</timeout>
<url/>
<query_fields/>
<posts/>
<status_codes>200</status_codes>
<follow_redirects>1</follow_redirects>
<post_type>0</post_type>
<http_proxy/>
<headers/>
<retrieve_mode>0</retrieve_mode>
<request_method>1</request_method>
<output_format>0</output_format>
<allow_traps>0</allow_traps>
<ssl_cert_file/>
<ssl_key_file/>
<ssl_key_password/>
<verify_peer>0</verify_peer>
<verify_host>0</verify_host>
<application_prototypes/>
<master_item/>
<request_method>POST</request_method>
<trigger_prototypes>
<trigger_prototype>
<expression>{str(Connected)}=0</expression>
<name>GlusterFS peer {#GLUSTER_PEER_HOST} disconnected</name>
<priority>HIGH</priority>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
</item_prototypes>
<trigger_prototypes>
<trigger_prototype>
<expression>{Template_App_GlusterFS:gluster.peer.status[{#GLUSTER_PEER_UUID}].str(Connected)}=0</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>GlusterFS peer {#GLUSTER_PEER_HOST} disconnected</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>4</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies/>
<tags/>
</trigger_prototype>
</trigger_prototypes>
<graph_prototypes/>
<host_prototypes/>
<jmx_endpoint/>
<timeout>3s</timeout>
<url/>
<query_fields/>
<posts/>
<status_codes>200</status_codes>
<follow_redirects>1</follow_redirects>
<post_type>0</post_type>
<http_proxy/>
<headers/>
<retrieve_mode>0</retrieve_mode>
<request_method>1</request_method>
<allow_traps>0</allow_traps>
<ssl_cert_file/>
<ssl_key_file/>
<ssl_key_password/>
<verify_peer>0</verify_peer>
<verify_host>0</verify_host>
<lld_macro_paths/>
<preprocessing/>
<master_item/>
<request_method>POST</request_method>
</discovery_rule>
<discovery_rule>
<name>GlusterFS: Volume discovery</name>
<type>0</type>
<snmp_community/>
<snmp_oid/>
<key>gluster.discovery[volumes]</key>
<delay>2h</delay>
<status>0</status>
<allowed_hosts/>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<filter>
<evaltype>0</evaltype>
<formula/>
<conditions/>
</filter>
<lifetime>30d</lifetime>
<description/>
<item_prototypes>
<item_prototype>
<name>GlusterFS {#GLUSTER_VOL_NAME} status</name>
<type>0</type>
<snmp_community/>
<snmp_oid/>
<key>gluster.volume.status[{#GLUSTER_VOL_NAME},{#GLUSTER_VOL_BRICKS}]</key>
<delay>614s</delay>
<history>90d</history>
<trends>0</trends>
<status>0</status>
<value_type>1</value_type>
<allowed_hosts/>
<units/>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<value_type>CHAR</value_type>
<applications>
<application>
<name>Gluster</name>
@ -360,114 +115,24 @@
<name>Storage</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<timeout>3s</timeout>
<url/>
<query_fields/>
<posts/>
<status_codes>200</status_codes>
<follow_redirects>1</follow_redirects>
<post_type>0</post_type>
<http_proxy/>
<headers/>
<retrieve_mode>0</retrieve_mode>
<request_method>1</request_method>
<output_format>0</output_format>
<allow_traps>0</allow_traps>
<ssl_cert_file/>
<ssl_key_file/>
<ssl_key_password/>
<verify_peer>0</verify_peer>
<verify_host>0</verify_host>
<application_prototypes/>
<master_item/>
<request_method>POST</request_method>
<trigger_prototypes>
<trigger_prototype>
<expression>{str(OK)}=0</expression>
<name>GlusterFS: {#GLUSTER_VOL_NAME} failure detected</name>
<priority>HIGH</priority>
</trigger_prototype>
<trigger_prototype>
<expression>{nodata(2460)}=1</expression>
<name>GlusterFS: {#GLUSTER_VOL_NAME} not sending health info</name>
<priority>AVERAGE</priority>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
</item_prototypes>
<trigger_prototypes>
<trigger_prototype>
<expression>{Template_App_GlusterFS:gluster.volume.status[{#GLUSTER_VOL_NAME},{#GLUSTER_VOL_BRICKS}].str(OK)}=0</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>GlusterFS: {#GLUSTER_VOL_NAME} failure detected</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>4</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies/>
<tags/>
</trigger_prototype>
<trigger_prototype>
<expression>{Template_App_GlusterFS:gluster.volume.status[{#GLUSTER_VOL_NAME},{#GLUSTER_VOL_BRICKS}].nodata(2460)}=1</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>GlusterFS: {#GLUSTER_VOL_NAME} not sending health info</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>3</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies/>
<tags/>
</trigger_prototype>
</trigger_prototypes>
<graph_prototypes/>
<host_prototypes/>
<jmx_endpoint/>
<timeout>3s</timeout>
<url/>
<query_fields/>
<posts/>
<status_codes>200</status_codes>
<follow_redirects>1</follow_redirects>
<post_type>0</post_type>
<http_proxy/>
<headers/>
<retrieve_mode>0</retrieve_mode>
<request_method>1</request_method>
<allow_traps>0</allow_traps>
<ssl_cert_file/>
<ssl_key_file/>
<ssl_key_password/>
<verify_peer>0</verify_peer>
<verify_host>0</verify_host>
<lld_macro_paths/>
<preprocessing/>
<master_item/>
<request_method>POST</request_method>
</discovery_rule>
</discovery_rules>
<httptests/>
<macros/>
<templates/>
<screens/>
<tags/>
</template>
</templates>
<triggers>
<trigger>
<expression>{Template_App_GlusterFS:proc.num[glusterfs].last()}&lt;1</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>GlusterFS: No gluster process runing</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>4</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies/>
<tags/>
</trigger>
</triggers>
</zabbix_export>

View File

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-06-19T12:08:22Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template_App_HSQL</template>
<name>Template_App_HSQL</name>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>HSQL</name>
</application>
</applications>
<items>
<item>
<name>HSQL TCP Service</name>
<key>net.tcp.listen[{$HSQL_PORT}]</key>
<delay>6m</delay>
<history>30d</history>
<trends>0</trends>
<applications>
<application>
<name>HSQL</name>
</application>
</applications>
<triggers>
<trigger>
<expression>{last()}&lt;&gt;1</expression>
<name>HSQL port {$HSQL_PORT} is not listening</name>
<priority>WARNING</priority>
<dependencies>
<dependency>
<name>No HSQL Service running</name>
<expression>{Template_App_HSQL:proc.num[manta,hyperfile,,HFCS-Serveur].last()}&lt;1</expression>
</dependency>
</dependencies>
</trigger>
</triggers>
</item>
<item>
<name>HSQL Server Processes</name>
<key>proc.num[manta,hyperfile,,HFCS-Serveur]</key>
<delay>5m</delay>
<history>30d</history>
<units>!process</units>
<applications>
<application>
<name>HSQL</name>
</application>
</applications>
<triggers>
<trigger>
<expression>{last()}&lt;1</expression>
<name>No HSQL Service running</name>
<priority>WARNING</priority>
</trigger>
</triggers>
</item>
<item>
<name>HSQL MantaManager Processes</name>
<key>proc.num[mantamanager,root,,]</key>
<delay>5m</delay>
<history>30d</history>
<units>!process</units>
<applications>
<application>
<name>HSQL</name>
</application>
</applications>
<triggers>
<trigger>
<expression>{last()}&lt;1</expression>
<name>No HSQL Manager Service running</name>
<priority>WARNING</priority>
</trigger>
</triggers>
</item>
</items>
<macros>
<macro>
<macro>{$HSQL_PORT}</macro>
<value>4900</value>
</macro>
</macros>
</template>
</templates>
</zabbix_export>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2020-10-20T16:43:35Z</date>
<date>2021-06-19T12:08:45Z</date>
<groups>
<group>
<name>Templates</name>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2020-12-17T15:29:59Z</date>
<date>2021-09-22T16:01:48Z</date>
<groups>
<group>
<name>Templates</name>
@ -28,7 +28,7 @@
<key>db.mysql[Aborted_clients]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<units>!connections</units>
<applications>
<application>
@ -55,7 +55,7 @@
<key>db.mysql[Aborted_connects]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<units>!conn</units>
<applications>
<application>
@ -82,7 +82,7 @@
<key>db.mysql[Access_denied_errors]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<units>!connections</units>
<applications>
<application>
@ -110,7 +110,7 @@ return json.Access_denied_errors || 0;</params>
<key>db.mysql[Acl_users]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<units>!users</units>
<applications>
<application>
@ -134,7 +134,7 @@ return json.Acl_users || 0;</params>
<key>db.mysql[Bytes_received]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<units>B/s</units>
<applications>
<application>
@ -161,7 +161,7 @@ return json.Acl_users || 0;</params>
<key>db.mysql[Bytes_sent]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<units>B/s</units>
<applications>
<application>
@ -188,7 +188,8 @@ return json.Acl_users || 0;</params>
<key>db.mysql[Com_admin_commands]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>!qps</units>
<applications>
<application>
@ -215,7 +216,8 @@ return json.Acl_users || 0;</params>
<key>db.mysql[Com_alter_user]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>!qps</units>
<applications>
<application>
@ -243,7 +245,8 @@ return json.Com_alter_user || 0;</params>
<key>db.mysql[Com_begin]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>!qps</units>
<applications>
<application>
@ -270,7 +273,8 @@ return json.Com_alter_user || 0;</params>
<key>db.mysql[Com_commit]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>!qps</units>
<applications>
<application>
@ -297,7 +301,8 @@ return json.Com_alter_user || 0;</params>
<key>db.mysql[Com_create_user]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>!qps</units>
<applications>
<application>
@ -324,7 +329,8 @@ return json.Com_alter_user || 0;</params>
<key>db.mysql[Com_delete]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>!qps</units>
<applications>
<application>
@ -351,7 +357,8 @@ return json.Com_alter_user || 0;</params>
<key>db.mysql[Com_insert]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>!qps</units>
<applications>
<application>
@ -378,7 +385,8 @@ return json.Com_alter_user || 0;</params>
<key>db.mysql[Com_prepare_sql]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>!qps</units>
<applications>
<application>
@ -405,7 +413,8 @@ return json.Com_alter_user || 0;</params>
<key>db.mysql[Com_rollback]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>!qps</units>
<applications>
<application>
@ -432,7 +441,8 @@ return json.Com_alter_user || 0;</params>
<key>db.mysql[Com_select]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>!qps</units>
<applications>
<application>
@ -459,7 +469,8 @@ return json.Com_alter_user || 0;</params>
<key>db.mysql[Com_update]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>!qps</units>
<applications>
<application>
@ -486,7 +497,7 @@ return json.Com_alter_user || 0;</params>
<key>db.mysql[Connections]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<units>!conn</units>
<applications>
<application>
@ -513,7 +524,7 @@ return json.Com_alter_user || 0;</params>
<key>db.mysql[Innodb_buffer_pool_bytes_data]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<units>B</units>
<applications>
<application>
@ -536,7 +547,7 @@ return json.Com_alter_user || 0;</params>
<key>db.mysql[Innodb_buffer_pool_bytes_dirty]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<units>B</units>
<applications>
<application>
@ -594,7 +605,8 @@ return json.Innodb_buffer_pool_load_status || 'Buffer pool(s) load completed at'
<key>db.mysql[Innodb_buffer_pool_reads]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>!reads</units>
<applications>
<application>
@ -621,7 +633,8 @@ return json.Innodb_buffer_pool_load_status || 'Buffer pool(s) load completed at'
<key>db.mysql[Innodb_data_fsyncs]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>!fsync/s</units>
<applications>
<application>
@ -648,7 +661,8 @@ return json.Innodb_buffer_pool_load_status || 'Buffer pool(s) load completed at'
<key>db.mysql[Innodb_os_log_fsyncs]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>!fsync/s</units>
<applications>
<application>
@ -675,7 +689,8 @@ return json.Innodb_buffer_pool_load_status || 'Buffer pool(s) load completed at'
<key>db.mysql[Max_statement_time_exceeded]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>!qps</units>
<applications>
<application>
@ -703,7 +718,7 @@ return json.Max_statement_time_exceeded || 0;</params>
<key>db.mysql[Memory_used]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<units>B</units>
<applications>
<application>
@ -727,7 +742,7 @@ return json.Memory_used || 0;</params>
<key>db.mysql[Open_files]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<units>!files</units>
<applications>
<application>
@ -773,7 +788,8 @@ return json.Memory_used || 0;</params>
<key>db.mysql[Qcache_hits]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>!qps</units>
<applications>
<application>
@ -800,7 +816,8 @@ return json.Memory_used || 0;</params>
<key>db.mysql[Queries]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>!qps</units>
<applications>
<application>
@ -834,7 +851,8 @@ return json.Memory_used || 0;</params>
<key>db.mysql[Slow_queries]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>!qps</units>
<applications>
<application>
@ -868,7 +886,7 @@ return json.Memory_used || 0;</params>
<key>db.mysql[Threads_running]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<units>!conn</units>
<applications>
<application>
@ -891,7 +909,7 @@ return json.Memory_used || 0;</params>
<key>db.mysql[Uptime]</key>
<delay>0</delay>
<history>30d</history>
<trends>1825d</trends>
<trends>1095d</trends>
<units>s</units>
<applications>
<application>

View File

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-06-19T12:09:19Z</date>
<groups>
<group>
<name>Modèles</name>
</group>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template_App_MySQL_legacy</template>
<name>Template_App_MySQL_legacy</name>
<groups>
<group>
<name>Modèles</name>
</group>
<group>
<name>Templates</name>
</group>
</groups>
<items>
<item>
<name>MySQL queries per second</name>
<key>mysql.qps</key>
<delay>5m</delay>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>qps</units>
<request_method>POST</request_method>
</item>
<item>
<name>MySQL number of slow queries</name>
<key>mysql.slowqueries</key>
<delay>5m</delay>
<trends>1095d</trends>
<request_method>POST</request_method>
</item>
<item>
<name>MySQL number of threads</name>
<key>mysql.threads</key>
<delay>5m</delay>
<trends>1095d</trends>
<request_method>POST</request_method>
</item>
<item>
<name>MySQL uptime</name>
<key>mysql.uptime</key>
<delay>5m</delay>
<trends>1095d</trends>
<status>DISABLED</status>
<units>uptime</units>
<request_method>POST</request_method>
</item>
<item>
<name>MySQL is alive</name>
<key>mysql[ping]</key>
<delay>5m</delay>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<request_method>POST</request_method>
</item>
<item>
<name>MySQL version</name>
<key>version[mysql]</key>
<delay>2h</delay>
<trends>0</trends>
<status>DISABLED</status>
<value_type>CHAR</value_type>
<request_method>POST</request_method>
</item>
</items>
</template>
</templates>
</zabbix_export>

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-01-08T12:03:11Z</date>
<date>2021-06-19T12:09:52Z</date>
<groups>
<group>
<name>Templates</name>

View File

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-06-19T12:10:10Z</date>
<groups>
<group>
<name>Modèles</name>
</group>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template_App_Qmail</template>
<name>Template_App_Qmail</name>
<groups>
<group>
<name>Modèles</name>
</group>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>qmail</name>
</application>
</applications>
<items>
<item>
<name>Emails locaux en queue</name>
<key>qmail[queue_local]</key>
<delay>2m</delay>
<trends>1825d</trends>
<units>mail</units>
<applications>
<application>
<name>qmail</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Emails distant en queue</name>
<key>qmail[queue_remote]</key>
<delay>2m</delay>
<trends>1825d</trends>
<units>mail</units>
<applications>
<application>
<name>qmail</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Emails en queue</name>
<key>qmail[queue_total]</key>
<delay>2m</delay>
<trends>1825d</trends>
<units>mail</units>
<applications>
<application>
<name>qmail</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
</items>
</template>
</templates>
</zabbix_export>

View File

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-06-19T12:11:20Z</date>
<groups>
<group>
<name>Modèles</name>
</group>
</groups>
<templates>
<template>
<template>Template_App_SOGo</template>
<name>Template_App_SOGo</name>
<groups>
<group>
<name>Modèles</name>
</group>
</groups>
<applications>
<application>
<name>sogo</name>
</application>
</applications>
<items>
<item>
<name>Mémoire utilisée par SOGo</name>
<key>proc.mem[sogod]</key>
<delay>3m</delay>
<trends>1825d</trends>
<units>o</units>
<applications>
<application>
<name>sogo</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Numbre de processus sogod</name>
<key>proc.num[sogod]</key>
<delay>2m</delay>
<trends>1825d</trends>
<applications>
<application>
<name>sogo</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{$SOGO}=1 and {last()}&lt;1</expression>
<name>Aucun processus SOGo</name>
<priority>AVERAGE</priority>
</trigger>
</triggers>
</item>
</items>
<macros>
<macro>
<macro>{$SOGO}</macro>
<value>1</value>
</macro>
</macros>
</template>
</templates>
</zabbix_export>

View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-06-19T12:12:08Z</date>
<groups>
<group>
<name>Modèles</name>
</group>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template_App_SSLExpire</template>
<name>Template_App_SSLExpire</name>
<groups>
<group>
<name>Modèles</name>
</group>
<group>
<name>Templates</name>
</group>
</groups>
<items>
<item>
<name>Expiration du certificat</name>
<type>EXTERNAL</type>
<key>cert_expire.pl[&quot;-h&quot;,&quot;{HOST.CONN}&quot;]</key>
<delay>30m</delay>
<trends>1825d</trends>
<units>jours</units>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{last(0)}&lt;{$SSL_WARN_EXPIRE} and {$SSL_WARN_EXPIRE}&lt;&gt;0</expression>
<name>Le certificat expire dans {ITEM.LASTVALUE1}</name>
<priority>AVERAGE</priority>
</trigger>
</triggers>
</item>
</items>
<macros>
<macro>
<macro>{$SSL_WARN_EXPIRE}</macro>
<value>90</value>
</macro>
</macros>
</template>
</templates>
</zabbix_export>

View File

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-06-19T12:10:27Z</date>
<groups>
<group>
<name>Modèles</name>
</group>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template_App_Samba</template>
<name>Template_App_Samba</name>
<groups>
<group>
<name>Modèles</name>
</group>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>samba</name>
</application>
</applications>
<items>
<item>
<name>Écoute smbd</name>
<key>net.tcp.port[,139]</key>
<delay>5m</delay>
<trends>1825d</trends>
<applications>
<application>
<name>samba</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Mémoire $1</name>
<key>proc.mem[nmbd,,sum]</key>
<delay>2m</delay>
<trends>1825d</trends>
<units>o</units>
<applications>
<application>
<name>samba</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Mémoire $1</name>
<key>proc.mem[smbd,,sum]</key>
<delay>2m</delay>
<trends>1825d</trends>
<units>o</units>
<applications>
<application>
<name>samba</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Nombre de processus $1</name>
<key>proc.num[nmbd]</key>
<delay>5m</delay>
<trends>1825d</trends>
<units>process</units>
<applications>
<application>
<name>samba</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Nombre de processus $1</name>
<key>proc.num[smbd]</key>
<delay>5m</delay>
<trends>1825d</trends>
<units>process</units>
<applications>
<application>
<name>samba</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Lookup nmbd</name>
<key>samba.nmbd.status</key>
<delay>3m</delay>
<trends>1825d</trends>
<applications>
<application>
<name>samba</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
</items>
</template>
</templates>
<triggers>
<trigger>
<expression>{Template_App_Samba:proc.num[nmbd].last()}&lt;1 or {Template_App_Samba:samba.nmbd.status.sum(#2)}&lt;1</expression>
<name>le démon nmbd ne fonctionne pas</name>
<status>DISABLED</status>
<priority>AVERAGE</priority>
</trigger>
<trigger>
<expression>{Template_App_Samba:proc.num[smbd].last()}&lt;1 or {Template_App_Samba:net.tcp.port[,139].last()}&lt;&gt;1</expression>
<name>le démon smbd n'est pas en fonctionnement</name>
<status>DISABLED</status>
<priority>AVERAGE</priority>
</trigger>
</triggers>
</zabbix_export>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-01-11T15:08:31Z</date>
<date>2021-06-19T12:10:45Z</date>
<groups>
<group>
<name>Templates</name>
@ -203,7 +203,7 @@
<history>60d</history>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>!auth/min</units>
<units>!auth</units>
<applications>
<application>
<name>Samba</name>
@ -214,10 +214,6 @@
<type>JSONPATH</type>
<params>$.activity.authentications.computers.failure</params>
</step>
<step>
<type>MULTIPLIER</type>
<params>0.2</params>
</step>
</preprocessing>
<master_item>
<key>samba_dc.info[300]</key>
@ -239,7 +235,7 @@
<history>60d</history>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>!auth/min</units>
<units>!auth</units>
<applications>
<application>
<name>Samba</name>
@ -250,10 +246,6 @@
<type>JSONPATH</type>
<params>$.activity.authentications.computers.success</params>
</step>
<step>
<type>MULTIPLIER</type>
<params>0.2</params>
</step>
</preprocessing>
<master_item>
<key>samba_dc.info[300]</key>
@ -267,7 +259,7 @@
<history>60d</history>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>!auth/min</units>
<units>!auth</units>
<applications>
<application>
<name>Samba</name>
@ -278,10 +270,6 @@
<type>JSONPATH</type>
<params>$.activity.authentications.users.failure</params>
</step>
<step>
<type>MULTIPLIER</type>
<params>0.2</params>
</step>
</preprocessing>
<master_item>
<key>samba_dc.info[300]</key>
@ -295,7 +283,7 @@
<history>60d</history>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>!auth/min</units>
<units>!auth</units>
<applications>
<application>
<name>Samba</name>
@ -306,10 +294,6 @@
<type>JSONPATH</type>
<params>$.activity.authentications.users.success</params>
</step>
<step>
<type>MULTIPLIER</type>
<params>0.2</params>
</step>
</preprocessing>
<master_item>
<key>samba_dc.info[300]</key>
@ -323,7 +307,7 @@
<history>60d</history>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>!auth/min</units>
<units>!auth</units>
<applications>
<application>
<name>Samba</name>
@ -334,10 +318,6 @@
<type>JSONPATH</type>
<params>$.activity.authorizations.computers</params>
</step>
<step>
<type>MULTIPLIER</type>
<params>0.2</params>
</step>
</preprocessing>
<master_item>
<key>samba_dc.info[300]</key>
@ -351,7 +331,7 @@
<history>60d</history>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>!auth/min</units>
<units>!auth</units>
<applications>
<application>
<name>Samba</name>
@ -362,10 +342,6 @@
<type>JSONPATH</type>
<params>$.activity.authorizations.users</params>
</step>
<step>
<type>MULTIPLIER</type>
<params>0.2</params>
</step>
</preprocessing>
<master_item>
<key>samba_dc.info[300]</key>
@ -607,7 +583,7 @@
<priority>WARNING</priority>
</trigger>
<trigger>
<expression>{nodata(15m)}=1</expression>
<expression>{nodata(25m)}=1</expression>
<name>Samba monitoring failed</name>
<priority>WARNING</priority>
</trigger>
@ -690,171 +666,8 @@
</discovery_rule>
</discovery_rules>
</template>
<template>
<template>Template_App_Samba_DC_Aggregate</template>
<name>Template_App_Samba_DC_Aggregate</name>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>Samba</name>
</application>
<application>
<name>samba</name>
</application>
</applications>
<items>
<item>
<name>Samba: Aggregated number of failed computers authentications</name>
<type>AGGREGATE</type>
<key>grpsum[&quot;{$SAMBA_AGGREGATE_GROUP}&quot;,&quot;samba_dc.info[activity.authentications.computers.failure]&quot;,last]</key>
<delay>5m</delay>
<history>60d</history>
<trends>1825d</trends>
<units>auth</units>
<applications>
<application>
<name>Samba</name>
</application>
</applications>
</item>
<item>
<name>Samba: Aggregated number of successful computers authentications</name>
<type>AGGREGATE</type>
<key>grpsum[&quot;{$SAMBA_AGGREGATE_GROUP}&quot;,&quot;samba_dc.info[activity.authentications.computers.success]&quot;,last]</key>
<delay>5m</delay>
<history>60d</history>
<trends>1825d</trends>
<units>auth</units>
<applications>
<application>
<name>Samba</name>
</application>
</applications>
</item>
<item>
<name>Samba: Aggregated number of failed users authentications</name>
<type>AGGREGATE</type>
<key>grpsum[&quot;{$SAMBA_AGGREGATE_GROUP}&quot;,&quot;samba_dc.info[activity.authentications.users.failure]&quot;,last]</key>
<delay>5m</delay>
<history>60d</history>
<trends>1825d</trends>
<units>auth</units>
<applications>
<application>
<name>Samba</name>
</application>
</applications>
</item>
<item>
<name>Samba: Aggregated number of successful users authentications</name>
<type>AGGREGATE</type>
<key>grpsum[&quot;{$SAMBA_AGGREGATE_GROUP}&quot;,&quot;samba_dc.info[activity.authentications.users.success]&quot;,last]</key>
<delay>5m</delay>
<history>60d</history>
<trends>1825d</trends>
<units>auth</units>
<applications>
<application>
<name>Samba</name>
</application>
</applications>
</item>
<item>
<name>Samba: Aggregated number of computers authorization requests</name>
<type>AGGREGATE</type>
<key>grpsum[&quot;{$SAMBA_AGGREGATE_GROUP}&quot;,&quot;samba_dc.info[activity.authorizations.computers]&quot;,last]</key>
<delay>5m</delay>
<history>60d</history>
<trends>1825d</trends>
<units>auth</units>
<applications>
<application>
<name>Samba</name>
</application>
</applications>
</item>
<item>
<name>Samba: Aggregated number of users authorization requests</name>
<type>AGGREGATE</type>
<key>grpsum[&quot;{$SAMBA_AGGREGATE_GROUP}&quot;,&quot;samba_dc.info[activity.authorizations.users]&quot;,last]</key>
<delay>5m</delay>
<history>60d</history>
<trends>1825d</trends>
<units>auth</units>
<applications>
<application>
<name>Samba</name>
</application>
</applications>
</item>
</items>
<macros>
<macro>
<macro>{$SAMBA_AGGREGATE_GROUP}</macro>
<value>Samba_DC</value>
</macro>
</macros>
</template>
</templates>
<graphs>
<graph>
<name>Samba: Aggregated Authentications &amp; Authorizations</name>
<type>STACKED</type>
<graph_items>
<graph_item>
<sortorder>1</sortorder>
<color>EF9A9A</color>
<item>
<host>Template_App_Samba_DC_Aggregate</host>
<key>grpsum[&quot;{$SAMBA_AGGREGATE_GROUP}&quot;,&quot;samba_dc.info[activity.authorizations.computers]&quot;,last]</key>
</item>
</graph_item>
<graph_item>
<sortorder>2</sortorder>
<color>CE93D8</color>
<item>
<host>Template_App_Samba_DC_Aggregate</host>
<key>grpsum[&quot;{$SAMBA_AGGREGATE_GROUP}&quot;,&quot;samba_dc.info[activity.authentications.computers.success]&quot;,last]</key>
</item>
</graph_item>
<graph_item>
<sortorder>3</sortorder>
<color>9FA8DA</color>
<item>
<host>Template_App_Samba_DC_Aggregate</host>
<key>grpsum[&quot;{$SAMBA_AGGREGATE_GROUP}&quot;,&quot;samba_dc.info[activity.authentications.computers.failure]&quot;,last]</key>
</item>
</graph_item>
<graph_item>
<sortorder>4</sortorder>
<color>81D4FA</color>
<item>
<host>Template_App_Samba_DC_Aggregate</host>
<key>grpsum[&quot;{$SAMBA_AGGREGATE_GROUP}&quot;,&quot;samba_dc.info[activity.authorizations.users]&quot;,last]</key>
</item>
</graph_item>
<graph_item>
<sortorder>5</sortorder>
<color>B2DFDB</color>
<item>
<host>Template_App_Samba_DC_Aggregate</host>
<key>grpsum[&quot;{$SAMBA_AGGREGATE_GROUP}&quot;,&quot;samba_dc.info[activity.authentications.users.success]&quot;,last]</key>
</item>
</graph_item>
<graph_item>
<sortorder>6</sortorder>
<color>FFF59D</color>
<item>
<host>Template_App_Samba_DC_Aggregate</host>
<key>grpsum[&quot;{$SAMBA_AGGREGATE_GROUP}&quot;,&quot;samba_dc.info[activity.authentications.users.failure]&quot;,last]</key>
</item>
</graph_item>
</graph_items>
</graph>
<graph>
<name>Samba: Authentications &amp; Authorizations</name>
<show_work_period>NO</show_work_period>

View File

@ -0,0 +1,177 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-06-19T12:11:01Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template_App_Samba_DC_Aggregate</template>
<name>Template_App_Samba_DC_Aggregate</name>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>Samba</name>
</application>
<application>
<name>samba</name>
</application>
</applications>
<items>
<item>
<name>Samba: Aggregated number of failed computers authentications</name>
<type>AGGREGATE</type>
<key>grpsum[&quot;{$SAMBA_AGGREGATE_GROUP}&quot;,&quot;samba_dc.info[activity.authentications.computers.failure]&quot;,last]</key>
<delay>5m</delay>
<history>60d</history>
<trends>1825d</trends>
<units>!auth</units>
<applications>
<application>
<name>Samba</name>
</application>
</applications>
</item>
<item>
<name>Samba: Aggregated number of successful computers authentications</name>
<type>AGGREGATE</type>
<key>grpsum[&quot;{$SAMBA_AGGREGATE_GROUP}&quot;,&quot;samba_dc.info[activity.authentications.computers.success]&quot;,last]</key>
<delay>5m</delay>
<history>60d</history>
<trends>1825d</trends>
<units>!auth</units>
<applications>
<application>
<name>Samba</name>
</application>
</applications>
</item>
<item>
<name>Samba: Aggregated number of failed users authentications</name>
<type>AGGREGATE</type>
<key>grpsum[&quot;{$SAMBA_AGGREGATE_GROUP}&quot;,&quot;samba_dc.info[activity.authentications.users.failure]&quot;,last]</key>
<delay>5m</delay>
<history>60d</history>
<trends>1825d</trends>
<units>!auth</units>
<applications>
<application>
<name>Samba</name>
</application>
</applications>
</item>
<item>
<name>Samba: Aggregated number of successful users authentications</name>
<type>AGGREGATE</type>
<key>grpsum[&quot;{$SAMBA_AGGREGATE_GROUP}&quot;,&quot;samba_dc.info[activity.authentications.users.success]&quot;,last]</key>
<delay>5m</delay>
<history>60d</history>
<trends>1825d</trends>
<units>!auth</units>
<applications>
<application>
<name>Samba</name>
</application>
</applications>
</item>
<item>
<name>Samba: Aggregated number of computers authorization requests</name>
<type>AGGREGATE</type>
<key>grpsum[&quot;{$SAMBA_AGGREGATE_GROUP}&quot;,&quot;samba_dc.info[activity.authorizations.computers]&quot;,last]</key>
<delay>5m</delay>
<history>60d</history>
<trends>1825d</trends>
<units>!auth</units>
<applications>
<application>
<name>Samba</name>
</application>
</applications>
</item>
<item>
<name>Samba: Aggregated number of users authorization requests</name>
<type>AGGREGATE</type>
<key>grpsum[&quot;{$SAMBA_AGGREGATE_GROUP}&quot;,&quot;samba_dc.info[activity.authorizations.users]&quot;,last]</key>
<delay>5m</delay>
<history>60d</history>
<trends>1825d</trends>
<units>!auth</units>
<applications>
<application>
<name>Samba</name>
</application>
</applications>
</item>
</items>
<macros>
<macro>
<macro>{$SAMBA_AGGREGATE_GROUP}</macro>
<value>Samba_DC</value>
</macro>
</macros>
</template>
</templates>
<graphs>
<graph>
<name>Samba: Aggregated Authentications &amp; Authorizations</name>
<type>STACKED</type>
<graph_items>
<graph_item>
<sortorder>1</sortorder>
<color>EF9A9A</color>
<item>
<host>Template_App_Samba_DC_Aggregate</host>
<key>grpsum[&quot;{$SAMBA_AGGREGATE_GROUP}&quot;,&quot;samba_dc.info[activity.authorizations.computers]&quot;,last]</key>
</item>
</graph_item>
<graph_item>
<sortorder>2</sortorder>
<color>CE93D8</color>
<item>
<host>Template_App_Samba_DC_Aggregate</host>
<key>grpsum[&quot;{$SAMBA_AGGREGATE_GROUP}&quot;,&quot;samba_dc.info[activity.authentications.computers.success]&quot;,last]</key>
</item>
</graph_item>
<graph_item>
<sortorder>3</sortorder>
<color>9FA8DA</color>
<item>
<host>Template_App_Samba_DC_Aggregate</host>
<key>grpsum[&quot;{$SAMBA_AGGREGATE_GROUP}&quot;,&quot;samba_dc.info[activity.authentications.computers.failure]&quot;,last]</key>
</item>
</graph_item>
<graph_item>
<sortorder>4</sortorder>
<color>81D4FA</color>
<item>
<host>Template_App_Samba_DC_Aggregate</host>
<key>grpsum[&quot;{$SAMBA_AGGREGATE_GROUP}&quot;,&quot;samba_dc.info[activity.authorizations.users]&quot;,last]</key>
</item>
</graph_item>
<graph_item>
<sortorder>5</sortorder>
<color>B2DFDB</color>
<item>
<host>Template_App_Samba_DC_Aggregate</host>
<key>grpsum[&quot;{$SAMBA_AGGREGATE_GROUP}&quot;,&quot;samba_dc.info[activity.authentications.users.success]&quot;,last]</key>
</item>
</graph_item>
<graph_item>
<sortorder>6</sortorder>
<color>FFF59D</color>
<item>
<host>Template_App_Samba_DC_Aggregate</host>
<key>grpsum[&quot;{$SAMBA_AGGREGATE_GROUP}&quot;,&quot;samba_dc.info[activity.authentications.users.failure]&quot;,last]</key>
</item>
</graph_item>
</graph_items>
</graph>
</graphs>
</zabbix_export>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>4.4</version>
<date>2020-01-16T17:32:11Z</date>
<version>5.0</version>
<date>2021-06-19T12:11:35Z</date>
<groups>
<group>
<name>Templates</name>
@ -28,8 +28,8 @@
<item>
<name>Squid: Used memory</name>
<key>proc.mem[squid]</key>
<delay>5m</delay>
<trends>1825d</trends>
<delay>10m</delay>
<trends>730d</trends>
<units>B</units>
<applications>
<application>
@ -44,7 +44,8 @@
<name>Squid: Number of processes</name>
<key>proc.num[squid]</key>
<delay>5m</delay>
<trends>1825d</trends>
<history>30d</history>
<trends>0</trends>
<units>!process</units>
<applications>
<application>
@ -65,7 +66,7 @@
<item>
<name>Squid: Info</name>
<key>squid.check[all]</key>
<delay>300s</delay>
<delay>10m</delay>
<history>0</history>
<trends>0</trends>
<value_type>TEXT</value_type>
@ -83,7 +84,7 @@
<type>DEPENDENT</type>
<key>squid.check[clients_num]</key>
<delay>0</delay>
<trends>1825d</trends>
<trends>730d</trends>
<units>!client(s)</units>
<applications>
<application>
@ -108,7 +109,7 @@
<type>DEPENDENT</type>
<key>squid.check[cpu_usage_avg_5min]</key>
<delay>0</delay>
<trends>1825d</trends>
<trends>730d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
@ -134,7 +135,7 @@
<type>DEPENDENT</type>
<key>squid.check[disk_hits_req_percent]</key>
<delay>0</delay>
<trends>1825d</trends>
<trends>730d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
@ -160,7 +161,7 @@
<type>DEPENDENT</type>
<key>squid.check[fd_used_percent]</key>
<delay>0</delay>
<trends>1825d</trends>
<trends>730d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
@ -193,7 +194,7 @@
<type>DEPENDENT</type>
<key>squid.check[hits_req_percent]</key>
<delay>0</delay>
<trends>1825d</trends>
<trends>730d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
@ -219,7 +220,7 @@
<type>DEPENDENT</type>
<key>squid.check[mean_object_size]</key>
<delay>0</delay>
<trends>1825d</trends>
<trends>730d</trends>
<units>B</units>
<applications>
<application>
@ -244,7 +245,7 @@
<type>DEPENDENT</type>
<key>squid.check[mem_hits_req_percent]</key>
<delay>0</delay>
<trends>1825d</trends>
<trends>730d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
@ -270,7 +271,7 @@
<type>DEPENDENT</type>
<key>squid.check[requests]</key>
<delay>0</delay>
<trends>1825d</trends>
<trends>730d</trends>
<value_type>FLOAT</value_type>
<units>req/s</units>
<applications>
@ -300,7 +301,7 @@
<type>DEPENDENT</type>
<key>squid.check[stor_swap_used_percent]</key>
<delay>0</delay>
<trends>1825d</trends>
<trends>730d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>

View File

@ -0,0 +1,160 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-06-19T12:11:50Z</date>
<groups>
<group>
<name>Modèles</name>
</group>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template_App_Squid_legacy</template>
<name>Template_App_Squid_legacy</name>
<groups>
<group>
<name>Modèles</name>
</group>
<group>
<name>Templates</name>
</group>
</groups>
<items>
<item>
<name>Nombre de File Descriptors disponibles</name>
<key>squid.available_fd</key>
<delay>5m</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>fd</units>
<request_method>POST</request_method>
</item>
<item>
<name>Nombre moyen de requêtes HTTP par minute</name>
<key>squid.avg_http_req_per_min</key>
<delay>1h</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>req/min</units>
<request_method>POST</request_method>
</item>
<item>
<name>Taux du volume en cache</name>
<key>squid.byte_hit_ratio</key>
<delay>10m</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<request_method>POST</request_method>
</item>
<item>
<name>Taille du cache sur disque</name>
<key>squid.cache_size_disk</key>
<delay>30m</delay>
<trends>1825d</trends>
<units>byte</units>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>1024</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
<item>
<name>Taille du cache en mémoire</name>
<key>squid.cache_size_mem</key>
<delay>30m</delay>
<trends>1825d</trends>
<units>byte</units>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>1024</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
<item>
<name>Nombre maximum de Files Descriptors</name>
<key>squid.max_fd</key>
<delay>2h</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>fd</units>
<request_method>POST</request_method>
</item>
<item>
<name>Taux des requêtes en cache</name>
<key>squid.request_hit_ratio</key>
<delay>10m</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<request_method>POST</request_method>
</item>
<item>
<name>Nombre de File Descriptors réservés</name>
<key>squid.reserved_fd</key>
<delay>2h</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>fd</units>
<request_method>POST</request_method>
</item>
</items>
<macros>
<macro>
<macro>{$SQUID_MIN_FREE_FD}</macro>
<value>20</value>
</macro>
</macros>
</template>
</templates>
<triggers>
<trigger>
<expression>({Template_App_Squid_legacy:squid.available_fd.last(0)} - {Template_App_Squid_legacy:squid.reserved_fd.last(0)})*100/{Template_App_Squid_legacy:squid.max_fd.last(0)}&lt;{$SQUID_MIN_FREE_FD}</expression>
<name>Moins de {$SQUID_MIN_FREE_FD} % de descripteurs de fichiers disponibles pour Squid</name>
<priority>AVERAGE</priority>
<description>Plus que {ITEM.LASTVALUE1} descripteurs de fichiers disponibles pour Squid.</description>
</trigger>
</triggers>
<graphs>
<graph>
<name>Réseau: Statistiques Squid</name>
<ymin_type_1>FIXED</ymin_type_1>
<graph_items>
<graph_item>
<drawtype>BOLD_LINE</drawtype>
<color>009900</color>
<item>
<host>Template_App_Squid_legacy</host>
<key>squid.byte_hit_ratio</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<drawtype>BOLD_LINE</drawtype>
<color>DD0000</color>
<item>
<host>Template_App_Squid_legacy</host>
<key>squid.request_hit_ratio</key>
</item>
</graph_item>
<graph_item>
<sortorder>2</sortorder>
<drawtype>BOLD_LINE</drawtype>
<color>0000DD</color>
<yaxisside>RIGHT</yaxisside>
<item>
<host>Template_App_Squid_legacy</host>
<key>squid.avg_http_req_per_min</key>
</item>
</graph_item>
</graph_items>
</graph>
</graphs>
</zabbix_export>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>4.4</version>
<date>2020-03-02T14:24:14Z</date>
<version>5.0</version>
<date>2021-09-22T16:05:01Z</date>
<groups>
<group>
<name>Templates</name>
@ -33,8 +33,8 @@
<type>DEPENDENT</type>
<key>unifi.alarm</key>
<delay>0</delay>
<history>30d</history>
<trends>730d</trends>
<history>60d</history>
<trends>1095d</trends>
<applications>
<application>
<name>Network</name>
@ -69,6 +69,7 @@
<type>DEPENDENT</type>
<key>unifi.build</key>
<delay>0</delay>
<history>30d</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
@ -96,8 +97,8 @@
<item>
<name>Unifi: Controler info</name>
<key>unifi.check.all[{$UNIFI_URL},{$UNIFI_USER},{$UNIFI_PASS},{$UNIFI_SITE},unifi]</key>
<delay>5m</delay>
<history>1h</history>
<delay>10m</delay>
<history>0</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
@ -115,8 +116,8 @@
<type>DEPENDENT</type>
<key>unifi.dev_adopted</key>
<delay>0</delay>
<history>30d</history>
<trends>730d</trends>
<history>60d</history>
<trends>1095d</trends>
<applications>
<application>
<name>Unifi</name>
@ -145,8 +146,8 @@
<type>DEPENDENT</type>
<key>unifi.dev_pending</key>
<delay>0</delay>
<history>30d</history>
<trends>730d</trends>
<history>60d</history>
<trends>1095d</trends>
<applications>
<application>
<name>Unifi</name>
@ -175,6 +176,7 @@
<type>DEPENDENT</type>
<key>unifi.version</key>
<delay>0</delay>
<history>30d</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
@ -205,8 +207,8 @@
<type>DEPENDENT</type>
<key>unifi.wired_clients</key>
<delay>0</delay>
<history>30d</history>
<trends>730d</trends>
<history>60d</history>
<trends>1095d</trends>
<applications>
<application>
<name>Unifi</name>
@ -228,8 +230,8 @@
<type>DEPENDENT</type>
<key>unifi.wired_guests</key>
<delay>0</delay>
<history>30d</history>
<trends>730d</trends>
<history>60d</history>
<trends>1095d</trends>
<applications>
<application>
<name>Unifi</name>
@ -251,8 +253,8 @@
<type>DEPENDENT</type>
<key>unifi.wireless_clients</key>
<delay>0</delay>
<history>30d</history>
<trends>730d</trends>
<history>60d</history>
<trends>1095d</trends>
<applications>
<application>
<name>Unifi</name>
@ -274,8 +276,8 @@
<type>DEPENDENT</type>
<key>unifi.wireless_guests</key>
<delay>0</delay>
<history>30d</history>
<trends>730d</trends>
<history>60d</history>
<trends>1095d</trends>
<applications>
<application>
<name>Unifi</name>
@ -302,7 +304,7 @@
<item_prototype>
<name>Unifi: AP: {#UNIFI_DEV_NAME}: Info</name>
<key>unifi.check.all[{$UNIFI_URL},{$UNIFI_USER},{$UNIFI_PASS},{$UNIFI_SITE},dev,{#UNIFI_DEV_MAC},uap]</key>
<delay>5m</delay>
<delay>8m</delay>
<history>0</history>
<trends>0</trends>
<value_type>TEXT</value_type>
@ -347,6 +349,7 @@
<expression>{str(true)}=0</expression>
<name>AP {#UNIFI_DEV_NAME} is waiting adoption</name>
<priority>WARNING</priority>
<manual_close>YES</manual_close>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
@ -914,7 +917,7 @@
</step>
<step>
<type>DISCARD_UNCHANGED_HEARTBEAT</type>
<params>1d</params>
<params>1h</params>
</step>
</preprocessing>
<master_item>
@ -926,6 +929,7 @@
<expression>{diff()}=1</expression>
<name>AP {#UNIFI_DEV_NAME} received a new config</name>
<priority>INFO</priority>
<manual_close>YES</manual_close>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
@ -1158,6 +1162,7 @@
<expression>{diff()}=1</expression>
<name>AP {#UNIFI_AP_NAME} changed its inform URL ({ITEM.LASTVALUE1})</name>
<priority>AVERAGE</priority>
<manual_close>YES</manual_close>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
@ -1189,6 +1194,7 @@
<expression>{last()}&gt;{$UNIFI_LAST_SEEN_WARN}</expression>
<name>No contact with AP {#UNIFI_DEV_NAME} since {ITEM.LASTVALUE1}</name>
<priority>AVERAGE</priority>
<manual_close>YES</manual_close>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
@ -1296,6 +1302,7 @@
<expression>{str(false)}=0</expression>
<name>AP {#UNIFI_DEV_NAME} location is enabled</name>
<priority>WARNING</priority>
<manual_close>YES</manual_close>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
@ -1875,6 +1882,7 @@
<expression>{last()}&lt;2h</expression>
<name>AP {#UNIFI_DEV_NAME} rebooted</name>
<priority>INFO</priority>
<manual_close>YES</manual_close>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
@ -2060,7 +2068,7 @@
</step>
<step>
<type>DISCARD_UNCHANGED_HEARTBEAT</type>
<params>1d</params>
<params>1h</params>
</step>
</preprocessing>
<master_item>
@ -2072,6 +2080,7 @@
<expression>{diff()}=1</expression>
<name>AP {#UNIFI_DEV_NAME} changed firmware version ({ITEM.LASTVALUE1})</name>
<priority>WARNING</priority>
<manual_close>YES</manual_close>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
@ -2359,7 +2368,7 @@
<item_prototype>
<name>Unifi: Switch: {#UNIFI_DEV_NAME}: Info</name>
<key>unifi.check.all[{$UNIFI_URL},{$UNIFI_USER},{$UNIFI_PASS},{$UNIFI_SITE},dev,{#UNIFI_DEV_MAC},usw]</key>
<delay>5m</delay>
<delay>8m</delay>
<history>0</history>
<trends>0</trends>
<value_type>TEXT</value_type>
@ -2398,6 +2407,7 @@
<expression>{str(true)}=0</expression>
<name>Switch {#UNIFI_DEV_NAME} is waiting adoption</name>
<priority>WARNING</priority>
<manual_close>YES</manual_close>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
@ -2421,7 +2431,7 @@
</step>
<step>
<type>DISCARD_UNCHANGED_HEARTBEAT</type>
<params>1d</params>
<params>1h</params>
</step>
</preprocessing>
<master_item>
@ -2433,6 +2443,7 @@
<expression>{diff()}=1</expression>
<name>Switch {#UNIFI_DEV_NAME} received a new configuration</name>
<priority>INFO</priority>
<manual_close>YES</manual_close>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
@ -2531,6 +2542,7 @@
<expression>{last()}&gt;{$UNIFI_LAST_SEEN_WARN}</expression>
<name>No contact with switch {#UNIFI_DEV_NAME} since {ITEM.LASTVALUE1}</name>
<priority>WARNING</priority>
<manual_close>YES</manual_close>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
@ -2638,6 +2650,7 @@
<expression>{str(false)}=0</expression>
<name>Switch {#UNIFI_DEV_NAME} has location enabed</name>
<priority>WARNING</priority>
<manual_close>YES</manual_close>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
@ -2992,6 +3005,7 @@
<expression>{last()}&lt;2h</expression>
<name>Switch {#UNIFI_DEV_NAME} rebooted</name>
<priority>INFO</priority>
<manual_close>YES</manual_close>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
@ -3015,7 +3029,7 @@
</step>
<step>
<type>DISCARD_UNCHANGED_HEARTBEAT</type>
<params>1d</params>
<params>1h</params>
</step>
</preprocessing>
<master_item>
@ -3027,6 +3041,7 @@
<expression>{diff()}=1</expression>
<name>Firmware version of switch {#UNIFI_DEV_NAME} changed ({ITEM.LASTVALUE1})</name>
<priority>WARNING</priority>
<manual_close>YES</manual_close>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
@ -3129,7 +3144,7 @@
<item_prototype>
<name>Unifi: Station {#UNIFI_STA_NAME}: Info</name>
<key>unifi.check.all[{$UNIFI_URL},{$UNIFI_USER},{$UNIFI_PASS},{$UNIFI_SITE},station,{#UNIFI_STA_MAC},wireless]</key>
<delay>5m</delay>
<delay>8m</delay>
<history>0</history>
<trends>0</trends>
<value_type>TEXT</value_type>
@ -3798,7 +3813,7 @@
<item_prototype>
<name>Unifi: WLAN {#UNIFI_WLAN_NAME}: Info</name>
<key>unifi.check.all[{$UNIFI_URL},{$UNIFI_USER},{$UNIFI_PASS},{$UNIFI_SITE},wlan,{#UNIFI_WLAN_ID},]</key>
<delay>5m</delay>
<delay>8m</delay>
<history>0</history>
<trends>0</trends>
<value_type>TEXT</value_type>
@ -4917,7 +4932,7 @@
</macro>
<macro>
<macro>{$UNIFI_NOISE_WARN}</macro>
<value>-85</value>
<value>-82</value>
</macro>
<macro>
<macro>{$UNIFI_PASS}</macro>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,937 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-06-19T12:12:41Z</date>
<groups>
<group>
<name>Modèles</name>
</group>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template_App_Zabbix_Server</template>
<name>Template_App_Zabbix_Server</name>
<groups>
<group>
<name>Modèles</name>
</group>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<items>
<item>
<name>Mémoire utilisée par le serveur Zabbix</name>
<key>proc.mem[zabbix_server_mysql]</key>
<delay>2m</delay>
<trends>1825d</trends>
<units>Octets</units>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Processus $2 en état $4 (en %)</name>
<type>INTERNAL</type>
<key>zabbix[process,alerter,avg,busy]</key>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{min(600)}&gt;75</expression>
<name>Plus de 75% des processus d'alertes sont occupés</name>
<priority>AVERAGE</priority>
</trigger>
</triggers>
</item>
<item>
<name>Processus $2 en état $4 (en %)</name>
<type>INTERNAL</type>
<key>zabbix[process,configuration syncer,avg,busy]</key>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{min(600)}&gt;75</expression>
<name>Plus de 75% des processus de synchronisation de configuration sont occupés</name>
<priority>AVERAGE</priority>
</trigger>
</triggers>
</item>
<item>
<name>Processus $2 en état $4 (en %)</name>
<type>INTERNAL</type>
<key>zabbix[process,db watchdog,avg,busy]</key>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{min(600)}&gt;75</expression>
<name>Plus de 75% des processus de surveillance de la base de données sont occupés</name>
<priority>AVERAGE</priority>
</trigger>
</triggers>
</item>
<item>
<name>Processus $2 en état $4 (en %)</name>
<type>INTERNAL</type>
<key>zabbix[process,discoverer,avg,busy]</key>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{min(600)}&gt;75</expression>
<name>Plus de 75% des processus de découverte sont occupés</name>
<priority>AVERAGE</priority>
</trigger>
</triggers>
</item>
<item>
<name>Processus $2 en état $4 (en %)</name>
<type>INTERNAL</type>
<key>zabbix[process,escalator,avg,busy]</key>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{min(600)}&gt;75</expression>
<name>Plus de 75% des processus d'escalade d'alertes sont occupés</name>
<priority>AVERAGE</priority>
</trigger>
</triggers>
</item>
<item>
<name>Processus $2 en état $4 (en %)</name>
<type>INTERNAL</type>
<key>zabbix[process,history syncer,avg,busy]</key>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{min(600)}&gt;75</expression>
<name>Plus de 75% des processus de synchronisation de l'historique sont occupés</name>
<priority>AVERAGE</priority>
<description>Zabbix history syncer processes more than 75% busy</description>
</trigger>
</triggers>
</item>
<item>
<name>Processus $2 en état $4 (en %)</name>
<type>INTERNAL</type>
<key>zabbix[process,housekeeper,avg,busy]</key>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{min(1800)}&gt;75</expression>
<name>Plus de 75% des processus de nettoyage de l'historique sont occupés</name>
<priority>AVERAGE</priority>
<description>Zabbix housekeeper processes more than 75% busy</description>
</trigger>
</triggers>
</item>
<item>
<name>Processus $2 en état $4 (en %)</name>
<type>INTERNAL</type>
<key>zabbix[process,http poller,avg,busy]</key>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{min(600)}&gt;75</expression>
<name>Plus de 75% des processus de requêtes HTTP sont occupés</name>
<priority>AVERAGE</priority>
<description>Zabbix http poller processes more than 75% busy</description>
</trigger>
</triggers>
</item>
<item>
<name>Processus $2 en état $4 (en %)</name>
<type>INTERNAL</type>
<key>zabbix[process,icmp pinger,avg,busy]</key>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{min(600)}&gt;75</expression>
<name>Plus de 75% des processus de requêtes ICMP sont occupés</name>
<priority>AVERAGE</priority>
<description>Zabbix icmp pinger processes more than 75% busy</description>
</trigger>
</triggers>
</item>
<item>
<name>Processus $2 en état $4 (en %)</name>
<type>INTERNAL</type>
<key>zabbix[process,ipmi poller,avg,busy]</key>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{min(600)}&gt;75</expression>
<name>Plus de 75% des processus de requêtes IMPI sont occupés</name>
<priority>AVERAGE</priority>
<description>Zabbix ipmi poller processes more than 75% busy</description>
</trigger>
</triggers>
</item>
<item>
<name>Processus $2 en état $4 (en %)</name>
<type>INTERNAL</type>
<key>zabbix[process,java poller,avg,busy]</key>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{min(600)}&gt;75</expression>
<name>Plus de 75% des processus de requêtes java sont occupés</name>
<priority>AVERAGE</priority>
<description>Zabbix java poller processes more than 75% busy</description>
</trigger>
</triggers>
</item>
<item>
<name>Processus $2 en état $4 (en %)</name>
<type>INTERNAL</type>
<key>zabbix[process,node watcher,avg,busy]</key>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{min(600)}&gt;75</expression>
<name>Plus de 75% des processus de vérification des nœuds sont occupés</name>
<priority>AVERAGE</priority>
<description>Zabbix node watcher processes more than 75% busy</description>
</trigger>
</triggers>
</item>
<item>
<name>Processus $2 en état $4 (en %)</name>
<type>INTERNAL</type>
<key>zabbix[process,poller,avg,busy]</key>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{min(600)}&gt;75</expression>
<name>Plus de 75% des processus de requêtes sont occupés</name>
<priority>AVERAGE</priority>
<description>Zabbix poller processes more than 75% busy</description>
</trigger>
</triggers>
</item>
<item>
<name>Processus $2 en état $4 (en %)</name>
<type>INTERNAL</type>
<key>zabbix[process,proxy poller,avg,busy]</key>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{min(600)}&gt;75</expression>
<name>Plus de 75% des processus de requêtes de proxy sont occupés</name>
<priority>AVERAGE</priority>
<description>Zabbix proxy poller processes more than 75% busy</description>
</trigger>
</triggers>
</item>
<item>
<name>Processus $2 en état $4 (en %)</name>
<type>INTERNAL</type>
<key>zabbix[process,self-monitoring,avg,busy]</key>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{min(600)}&gt;75</expression>
<name>Plus de 75% des processus d'auto surveillance sont occupés</name>
<priority>AVERAGE</priority>
<description>Zabbix self-monitoring processes more than 75% busy</description>
</trigger>
</triggers>
</item>
<item>
<name>Processus $2 en état $4 (en %)</name>
<type>INTERNAL</type>
<key>zabbix[process,snmp trapper,avg,busy]</key>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{min(600)}&gt;75</expression>
<name>Plus de 75% des processus d'écoute SNMP sont occupés</name>
<priority>AVERAGE</priority>
<description>Zabbix snmp trapper processes more than 75% busy</description>
</trigger>
</triggers>
</item>
<item>
<name>Processus $2 en état $4 (en %)</name>
<type>INTERNAL</type>
<key>zabbix[process,timer,avg,busy]</key>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{min(600)}&gt;75</expression>
<name>Plus de 75% des processus d'ordonnancement sont occupés</name>
<priority>AVERAGE</priority>
<description>Zabbix timer processes more than 75% busy&#13;
&#13;
Timer processes usually are busy because they have to process time based trigger functions</description>
</trigger>
</triggers>
</item>
<item>
<name>Processus $2 en état $4 (en %)</name>
<type>INTERNAL</type>
<key>zabbix[process,trapper,avg,busy]</key>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{min(600)}&gt;75</expression>
<name>Plus de 75% des processus d'écoute sont occupés</name>
<priority>AVERAGE</priority>
<description>Zabbix trapper processes more than 75% busy</description>
</trigger>
</triggers>
</item>
<item>
<name>Processus $2 en état $4 (en %)</name>
<type>INTERNAL</type>
<key>zabbix[process,unreachable poller,avg,busy]</key>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{min(600)}&gt;75</expression>
<name>Plus de 75% des processus de requêtes d'hôte injoignable sont occupés</name>
<priority>AVERAGE</priority>
<description>Zabbix unreachable poller processes more than 75% busy</description>
</trigger>
</triggers>
</item>
<item>
<name>Nombre d'éléments en attente depuis $2</name>
<type>INTERNAL</type>
<key>zabbix[queue,10m]</key>
<delay>10m</delay>
<trends>1825d</trends>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{min(600)}&gt;{$MAX_MISS_DATA_10M}</expression>
<name>{ITEM.VALUE1} éléments ont des données manquantes pendant plus de 10 minutes</name>
<priority>WARNING</priority>
<description>zabbix[queue,10m] item is collecting data about how many items are missing data for more than 10 minutes (next parameter)</description>
</trigger>
</triggers>
</item>
<item>
<name>Nombre d'éléments en attente</name>
<type>INTERNAL</type>
<key>zabbix[queue]</key>
<delay>10m</delay>
<trends>1825d</trends>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Cache de configuration (% libre)</name>
<type>INTERNAL</type>
<key>zabbix[rcache,buffer,pfree]</key>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{min(600)}&lt;25</expression>
<name>Moins de 25% du cache de configuration libre</name>
<priority>AVERAGE</priority>
<description>Augmenter le CacheSize dans le fichier de configuration zabbix_server.conf</description>
</trigger>
</triggers>
</item>
<item>
<name>Cache en écriture de l'historique (% libre)</name>
<type>INTERNAL</type>
<key>zabbix[wcache,history,pfree]</key>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{min(600)}&lt;25</expression>
<name>Moins de 25% du cache d'historique libre</name>
<priority>AVERAGE</priority>
</trigger>
</triggers>
</item>
<item>
<name>Cache en écriture des données texte (% libre)</name>
<type>INTERNAL</type>
<key>zabbix[wcache,text,pfree]</key>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{min(600)}&lt;25</expression>
<name>Moins de 25% du cache des données texte libre</name>
<priority>AVERAGE</priority>
</trigger>
</triggers>
</item>
<item>
<name>Cache en écriture des tendances (% libre)</name>
<type>INTERNAL</type>
<key>zabbix[wcache,trend,pfree]</key>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{min(600)}&lt;25</expression>
<name>Moins de 25% du cache de tendance libre</name>
<priority>AVERAGE</priority>
<description>Less than 25% free in the trends cache</description>
</trigger>
</triggers>
</item>
<item>
<name>Nombre de valeurs traitées par seconde</name>
<type>INTERNAL</type>
<key>zabbix[wcache,values]</key>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<applications>
<application>
<name>Serveur Zabbix</name>
</application>
</applications>
<preprocessing>
<step>
<type>CHANGE_PER_SECOND</type>
<params/>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
</items>
<macros>
<macro>
<macro>{$MAX_MISS_DATA_10M}</macro>
<value>100</value>
</macro>
</macros>
<screens>
<screen>
<name>Zabbix server health</name>
<hsize>2</hsize>
<vsize>2</vsize>
<screen_items>
<screen_item>
<resourcetype>0</resourcetype>
<style>0</style>
<resource>
<name>Zabbix: Performance du serveur</name>
<host>Template_App_Zabbix_Server</host>
</resource>
<width>500</width>
<height>212</height>
<x>0</x>
<y>0</y>
<colspan>1</colspan>
<rowspan>1</rowspan>
<elements>0</elements>
<valign>1</valign>
<halign>0</halign>
<dynamic>0</dynamic>
<sort_triggers>0</sort_triggers>
<url/>
<application/>
<max_columns>3</max_columns>
</screen_item>
<screen_item>
<resourcetype>0</resourcetype>
<style>0</style>
<resource>
<name>Zabbix: Processus d'acquisition de données</name>
<host>Template_App_Zabbix_Server</host>
</resource>
<width>500</width>
<height>100</height>
<x>1</x>
<y>0</y>
<colspan>1</colspan>
<rowspan>1</rowspan>
<elements>0</elements>
<valign>1</valign>
<halign>0</halign>
<dynamic>0</dynamic>
<sort_triggers>0</sort_triggers>
<url/>
<application/>
<max_columns>3</max_columns>
</screen_item>
<screen_item>
<resourcetype>0</resourcetype>
<style>0</style>
<resource>
<name>Zabbix: Processus internes</name>
<host>Template_App_Zabbix_Server</host>
</resource>
<width>500</width>
<height>100</height>
<x>0</x>
<y>1</y>
<colspan>1</colspan>
<rowspan>1</rowspan>
<elements>0</elements>
<valign>1</valign>
<halign>0</halign>
<dynamic>0</dynamic>
<sort_triggers>0</sort_triggers>
<url/>
<application/>
<max_columns>3</max_columns>
</screen_item>
<screen_item>
<resourcetype>0</resourcetype>
<style>0</style>
<resource>
<name>Zabbix: Utilisation du cache (% libre)</name>
<host>Template_App_Zabbix_Server</host>
</resource>
<width>500</width>
<height>128</height>
<x>1</x>
<y>1</y>
<colspan>1</colspan>
<rowspan>1</rowspan>
<elements>0</elements>
<valign>1</valign>
<halign>0</halign>
<dynamic>0</dynamic>
<sort_triggers>0</sort_triggers>
<url/>
<application/>
<max_columns>3</max_columns>
</screen_item>
</screen_items>
</screen>
</screens>
</template>
</templates>
<graphs>
<graph>
<name>Zabbix: Performance du serveur</name>
<graph_items>
<graph_item>
<drawtype>GRADIENT_LINE</drawtype>
<color>00C800</color>
<item>
<host>Template_App_Zabbix_Server</host>
<key>zabbix[wcache,values]</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<drawtype>GRADIENT_LINE</drawtype>
<color>0000C8</color>
<item>
<host>Template_App_Zabbix_Server</host>
<key>zabbix[queue,10m]</key>
</item>
</graph_item>
<graph_item>
<sortorder>2</sortorder>
<drawtype>GRADIENT_LINE</drawtype>
<color>C80000</color>
<yaxisside>RIGHT</yaxisside>
<item>
<host>Template_App_Zabbix_Server</host>
<key>zabbix[queue]</key>
</item>
</graph_item>
</graph_items>
</graph>
<graph>
<name>Zabbix: Processus d'acquisition de données</name>
<ymin_type_1>FIXED</ymin_type_1>
<ymax_type_1>FIXED</ymax_type_1>
<graph_items>
<graph_item>
<color>990099</color>
<item>
<host>Template_App_Zabbix_Server</host>
<key>zabbix[process,trapper,avg,busy]</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<color>990000</color>
<item>
<host>Template_App_Zabbix_Server</host>
<key>zabbix[process,poller,avg,busy]</key>
</item>
</graph_item>
<graph_item>
<sortorder>2</sortorder>
<color>0000EE</color>
<item>
<host>Template_App_Zabbix_Server</host>
<key>zabbix[process,ipmi poller,avg,busy]</key>
</item>
</graph_item>
<graph_item>
<sortorder>3</sortorder>
<color>FF33FF</color>
<item>
<host>Template_App_Zabbix_Server</host>
<key>zabbix[process,discoverer,avg,busy]</key>
</item>
</graph_item>
<graph_item>
<sortorder>4</sortorder>
<color>00EE00</color>
<item>
<host>Template_App_Zabbix_Server</host>
<key>zabbix[process,icmp pinger,avg,busy]</key>
</item>
</graph_item>
<graph_item>
<sortorder>5</sortorder>
<color>003300</color>
<item>
<host>Template_App_Zabbix_Server</host>
<key>zabbix[process,http poller,avg,busy]</key>
</item>
</graph_item>
<graph_item>
<sortorder>6</sortorder>
<color>CCCC00</color>
<item>
<host>Template_App_Zabbix_Server</host>
<key>zabbix[process,proxy poller,avg,busy]</key>
</item>
</graph_item>
<graph_item>
<sortorder>7</sortorder>
<color>33FFFF</color>
<item>
<host>Template_App_Zabbix_Server</host>
<key>zabbix[process,unreachable poller,avg,busy]</key>
</item>
</graph_item>
<graph_item>
<sortorder>8</sortorder>
<color>DD0000</color>
<item>
<host>Template_App_Zabbix_Server</host>
<key>zabbix[process,java poller,avg,busy]</key>
</item>
</graph_item>
<graph_item>
<sortorder>9</sortorder>
<color>000099</color>
<calc_fnc>ALL</calc_fnc>
<item>
<host>Template_App_Zabbix_Server</host>
<key>zabbix[process,snmp trapper,avg,busy]</key>
</item>
</graph_item>
</graph_items>
</graph>
<graph>
<name>Zabbix: Processus internes</name>
<ymin_type_1>FIXED</ymin_type_1>
<ymax_type_1>FIXED</ymax_type_1>
<graph_items>
<graph_item>
<color>00EE00</color>
<item>
<host>Template_App_Zabbix_Server</host>
<key>zabbix[process,timer,avg,busy]</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<color>007777</color>
<item>
<host>Template_App_Zabbix_Server</host>
<key>zabbix[process,node watcher,avg,busy]</key>
</item>
</graph_item>
<graph_item>
<sortorder>2</sortorder>
<color>0000EE</color>
<item>
<host>Template_App_Zabbix_Server</host>
<key>zabbix[process,escalator,avg,busy]</key>
</item>
</graph_item>
<graph_item>
<sortorder>3</sortorder>
<color>FFAA00</color>
<item>
<host>Template_App_Zabbix_Server</host>
<key>zabbix[process,housekeeper,avg,busy]</key>
</item>
</graph_item>
<graph_item>
<sortorder>4</sortorder>
<color>00EEEE</color>
<item>
<host>Template_App_Zabbix_Server</host>
<key>zabbix[process,alerter,avg,busy]</key>
</item>
</graph_item>
<graph_item>
<sortorder>5</sortorder>
<color>990099</color>
<item>
<host>Template_App_Zabbix_Server</host>
<key>zabbix[process,configuration syncer,avg,busy]</key>
</item>
</graph_item>
<graph_item>
<sortorder>6</sortorder>
<color>666600</color>
<item>
<host>Template_App_Zabbix_Server</host>
<key>zabbix[process,db watchdog,avg,busy]</key>
</item>
</graph_item>
<graph_item>
<sortorder>7</sortorder>
<color>EE0000</color>
<item>
<host>Template_App_Zabbix_Server</host>
<key>zabbix[process,history syncer,avg,busy]</key>
</item>
</graph_item>
<graph_item>
<sortorder>8</sortorder>
<color>FF66FF</color>
<item>
<host>Template_App_Zabbix_Server</host>
<key>zabbix[process,self-monitoring,avg,busy]</key>
</item>
</graph_item>
</graph_items>
</graph>
<graph>
<name>Zabbix: Utilisation du cache (% libre)</name>
<ymin_type_1>FIXED</ymin_type_1>
<ymax_type_1>FIXED</ymax_type_1>
<graph_items>
<graph_item>
<color>009900</color>
<item>
<host>Template_App_Zabbix_Server</host>
<key>zabbix[wcache,trend,pfree]</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<color>DD0000</color>
<item>
<host>Template_App_Zabbix_Server</host>
<key>zabbix[rcache,buffer,pfree]</key>
</item>
</graph_item>
<graph_item>
<sortorder>2</sortorder>
<color>00DDDD</color>
<item>
<host>Template_App_Zabbix_Server</host>
<key>zabbix[wcache,text,pfree]</key>
</item>
</graph_item>
<graph_item>
<sortorder>3</sortorder>
<color>3333FF</color>
<item>
<host>Template_App_Zabbix_Server</host>
<key>zabbix[wcache,history,pfree]</key>
</item>
</graph_item>
</graph_items>
</graph>
</graphs>
</zabbix_export>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,195 @@
zabbix_export:
version: '6.0'
date: '2023-12-21T14:57:39Z'
groups:
- uuid: 7df96b18c230490a9a0a9e2307226338
name: Templates
templates:
- uuid: 98cb8260bbeb4a94a8b07b54608521c8
template: Template_HW_storageDevices
name: Template_HW_storageDevices
groups:
- name: Templates
discovery_rules:
- uuid: 12b9a456943f49aca440958063a5bfe2
name: 'SMART capable Storage devices discovery'
key: 'stor.dev.discovery[smart]'
delay: 1h
filter:
conditions:
- macro: '{#STOR_DEV_SMART}'
value: ^1$
formulaid: A
lifetime: 7d
item_prototypes:
- uuid: 0743506e1c1b49f5b47bd5cef5462c55
name: 'Stor dev {#STOR_DEV_SN} ({#STOR_DEV_DESC}): Pending sectors'
type: DEPENDENT
key: 'stor.dev.info[{#STOR_DEV_NAME},{#STOR_DEV_TYPE},current_pending_sector]'
delay: '0'
history: 30d
value_type: FLOAT
units: '!sector(s)'
preprocessing:
- type: JSONPATH
parameters:
- $.current_pending_sector
master_item:
key: 'stor.dev.info[{#STOR_DEV_NAME},{#STOR_DEV_TYPE}]'
trigger_prototypes:
- uuid: 9ffa5efc061542e8a5f227936396e5ab
expression: 'change(/Template_HW_storageDevices/stor.dev.info[{#STOR_DEV_NAME},{#STOR_DEV_TYPE},current_pending_sector])>0'
recovery_mode: NONE
name: '{ITEM.LASTVALUE1} pending on {#STOR_DEV_SN} ({#STOR_DEV_DESC})'
priority: AVERAGE
manual_close: 'YES'
- uuid: 3da3d8491a024c7ab4f0bb3fc3887a64
name: 'Stor dev {#STOR_DEV_SN} ({#STOR_DEV_DESC}): Firmware version'
type: DEPENDENT
key: 'stor.dev.info[{#STOR_DEV_NAME},{#STOR_DEV_TYPE},firmware_version]'
delay: '0'
history: 30d
trends: '0'
value_type: CHAR
preprocessing:
- type: JSONPATH
parameters:
- $.firmware_version
master_item:
key: 'stor.dev.info[{#STOR_DEV_NAME},{#STOR_DEV_TYPE}]'
- uuid: 6d4967ca28f549048a507209737fa7bd
name: 'Stor dev {#STOR_DEV_SN} ({#STOR_DEV_DESC}): Offline uncorrectable'
type: DEPENDENT
key: 'stor.dev.info[{#STOR_DEV_NAME},{#STOR_DEV_TYPE},offline_uncorrectable]'
delay: '0'
history: 30d
value_type: FLOAT
units: '!sector(s)'
preprocessing:
- type: JSONPATH
parameters:
- $.offline_uncorrectable
master_item:
key: 'stor.dev.info[{#STOR_DEV_NAME},{#STOR_DEV_TYPE}]'
trigger_prototypes:
- uuid: 66c5fc3a96354eb3aae8d5a08eea4544
expression: 'change(/Template_HW_storageDevices/stor.dev.info[{#STOR_DEV_NAME},{#STOR_DEV_TYPE},offline_uncorrectable])>0'
recovery_mode: NONE
name: '{ITEM.LASTVALUE1} offline uncorrectable on {#STOR_DEV_SN} ({#STOR_DEV_DESC})'
priority: HIGH
manual_close: 'YES'
- uuid: df1ef0de1bc54200895a5d173a583905
name: 'Stor dev {#STOR_DEV_SN} ({#STOR_DEV_DESC}): Percent Lifetime Remain'
type: DEPENDENT
key: 'stor.dev.info[{#STOR_DEV_NAME},{#STOR_DEV_TYPE},percent_lifetime_remain]'
delay: '0'
history: 30d
value_type: FLOAT
units: '%'
preprocessing:
- type: JSONPATH
parameters:
- $.percent_lifetime_remain
master_item:
key: 'stor.dev.info[{#STOR_DEV_NAME},{#STOR_DEV_TYPE}]'
trigger_prototypes:
- uuid: caaa6496f8e941a08f37c8746bb34bc2
expression: 'last(/Template_HW_storageDevices/stor.dev.info[{#STOR_DEV_NAME},{#STOR_DEV_TYPE},percent_lifetime_remain])<{$STOR_LIFETIME_REMAINING_CRITICAL:"{#STOR_DEV_SN}"}'
name: '{ITEM.LASTVALUE1} lifetime remaining for {#STOR_DEV_SN} ({#STOR_DEV_DESC})'
priority: HIGH
manual_close: 'YES'
- uuid: 1df675ca6c4649a081ea315599ce4284
expression: 'last(/Template_HW_storageDevices/stor.dev.info[{#STOR_DEV_NAME},{#STOR_DEV_TYPE},percent_lifetime_remain])<{$STOR_LIFETIME_REMAINING_WARN:"{#STOR_DEV_SN}"}'
name: '{ITEM.LASTVALUE1} lifetime remaining for {#STOR_DEV_SN} ({#STOR_DEV_DESC})'
priority: WARNING
manual_close: 'YES'
dependencies:
- name: '{ITEM.LASTVALUE1} lifetime remaining for {#STOR_DEV_SN} ({#STOR_DEV_DESC})'
expression: 'last(/Template_HW_storageDevices/stor.dev.info[{#STOR_DEV_NAME},{#STOR_DEV_TYPE},percent_lifetime_remain])<{$STOR_LIFETIME_REMAINING_CRITICAL:"{#STOR_DEV_SN}"}'
- uuid: 70dd4bcd3994423594f7330bbb448038
name: 'Stor dev {#STOR_DEV_SN} ({#STOR_DEV_DESC}): Power Cycle Count'
type: DEPENDENT
key: 'stor.dev.info[{#STOR_DEV_NAME},{#STOR_DEV_TYPE},power_cycle_count]'
delay: '0'
history: 30d
value_type: FLOAT
preprocessing:
- type: JSONPATH
parameters:
- $.power_cycle_count
master_item:
key: 'stor.dev.info[{#STOR_DEV_NAME},{#STOR_DEV_TYPE}]'
- uuid: f68f569400954636a7e4231c97c57c81
name: 'Stor dev {#STOR_DEV_SN} ({#STOR_DEV_DESC}): Power on hours'
type: DEPENDENT
key: 'stor.dev.info[{#STOR_DEV_NAME},{#STOR_DEV_TYPE},power_on_hours]'
delay: '0'
history: 30d
value_type: FLOAT
units: s
preprocessing:
- type: JSONPATH
parameters:
- $.power_on_hours
- type: MULTIPLIER
parameters:
- '3600'
master_item:
key: 'stor.dev.info[{#STOR_DEV_NAME},{#STOR_DEV_TYPE}]'
- uuid: 76e724749c304d7da9c38b81bfb9b711
name: 'Stor dev {#STOR_DEV_SN} ({#STOR_DEV_DESC}): Reallocated Sectors'
type: DEPENDENT
key: 'stor.dev.info[{#STOR_DEV_NAME},{#STOR_DEV_TYPE},reallocated_sector_count]'
delay: '0'
history: 30d
value_type: FLOAT
units: '!sector(s)'
preprocessing:
- type: JSONPATH
parameters:
- $.reallocated_sector_count
master_item:
key: 'stor.dev.info[{#STOR_DEV_NAME},{#STOR_DEV_TYPE}]'
trigger_prototypes:
- uuid: f7b3fa0f6a8347e3b67387da531a2d1a
expression: 'change(/Template_HW_storageDevices/stor.dev.info[{#STOR_DEV_NAME},{#STOR_DEV_TYPE},reallocated_sector_count])>0'
recovery_mode: NONE
name: '{ITEM.LASTVALUE1} reallocated on {#STOR_DEV_SN} ({#STOR_DEV_DESC})'
priority: WARNING
manual_close: 'YES'
dependencies:
- name: '{ITEM.LASTVALUE1} reallocated on {#STOR_DEV_SN} ({#STOR_DEV_DESC})'
expression: 'last(/Template_HW_storageDevices/stor.dev.info[{#STOR_DEV_NAME},{#STOR_DEV_TYPE},reallocated_sector_count])>{$STOR_REALLOC_SECTOR_WARN:"{#STOR_DEV_SN}"}'
- uuid: 85d6eb29ca7b4175bf8ad15414a44936
expression: 'last(/Template_HW_storageDevices/stor.dev.info[{#STOR_DEV_NAME},{#STOR_DEV_TYPE},reallocated_sector_count])>{$STOR_REALLOC_SECTOR_WARN:"{#STOR_DEV_SN}"}'
name: '{ITEM.LASTVALUE1} reallocated on {#STOR_DEV_SN} ({#STOR_DEV_DESC})'
priority: AVERAGE
manual_close: 'YES'
- uuid: 28117d0d998f467ea542821e4a6507c9
name: 'Stor dev {#STOR_DEV_SN} ({#STOR_DEV_DESC}): Temperature'
type: DEPENDENT
key: 'stor.dev.info[{#STOR_DEV_NAME},{#STOR_DEV_TYPE},temperature_celsius]'
delay: '0'
history: 30d
value_type: FLOAT
units: °C
preprocessing:
- type: JSONPATH
parameters:
- $.temperature_celsius
master_item:
key: 'stor.dev.info[{#STOR_DEV_NAME},{#STOR_DEV_TYPE}]'
- uuid: 6d3da698590e43f4be62d5daab7f72f0
name: 'Stor dev {#STOR_DEV_SN} ({#STOR_DEV_DESC}) info'
key: 'stor.dev.info[{#STOR_DEV_NAME},{#STOR_DEV_TYPE}]'
delay: 8m
history: '0'
trends: '0'
value_type: TEXT
macros:
- macro: '{$STOR_LIFETIME_REMAINING_CRITICAL}'
value: '6'
- macro: '{$STOR_LIFETIME_REMAINING_WARN}'
value: '10'
- macro: '{$STOR_REALLOC_SECTOR_WARN}'
value: '40'

View File

@ -0,0 +1,603 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-06-19T12:14:06Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template_Netgear_ReadyNas</template>
<name>Template_Netgear_ReadyNas</name>
<templates>
<template>
<name>Template_SNMP_Interfaces</name>
</template>
</templates>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>Disk</name>
</application>
<application>
<name>Fans</name>
</application>
<application>
<name>General</name>
</application>
<application>
<name>Temperatures</name>
</application>
<application>
<name>Volume</name>
</application>
</applications>
<items>
<item>
<name>Serial number</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.4526.22.2.0</snmp_oid>
<key>nasMgrSerialNUM</key>
<delay>1h</delay>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>General</name>
</application>
</applications>
</item>
<item>
<name>Firmware version</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.4526.22.1.0</snmp_oid>
<key>nasMgrSoftwareVersion</key>
<delay>1h</delay>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>General</name>
</application>
</applications>
</item>
</items>
<discovery_rules>
<discovery_rule>
<name>Discovery_Disk</name>
<type>SNMP_AGENT</type>
<snmp_oid>discovery[{#SNMPVALUE},.1.3.6.1.4.1.4526.22.3.1.1]</snmp_oid>
<key>Disk</key>
<delay>1h</delay>
<item_prototypes>
<item_prototype>
<name>[{#SNMPVALUE}]_ataError</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.4526.22.3.1.6.{#SNMPINDEX}</snmp_oid>
<key>DiskAtaError[{#SNMPVALUE}]</key>
<delay>5m</delay>
<trends>1825d</trends>
<applications>
<application>
<name>Disk</name>
</application>
</applications>
</item_prototype>
<item_prototype>
<name>[{#SNMPVALUE}]_DiskCapacity</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.4526.22.3.1.7.{#SNMPINDEX}</snmp_oid>
<key>DiskCapacity[{#SNMPVALUE}]</key>
<delay>8h</delay>
<history>30d</history>
<trends>0</trends>
<units>B</units>
<applications>
<application>
<name>Disk</name>
</application>
</applications>
</item_prototype>
<item_prototype>
<name>[{#SNMPVALUE}]_DiskID</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.4526.22.3.1.2.{#SNMPINDEX}</snmp_oid>
<key>DiskID[{#SNMPVALUE}]</key>
<delay>8h</delay>
<history>30d</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>Disk</name>
</application>
</applications>
</item_prototype>
<item_prototype>
<name>[{#SNMPVALUE}]_DiskInterface</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.4526.22.3.1.8.{#SNMPINDEX}</snmp_oid>
<key>DiskInterface[{#SNMPVALUE}]</key>
<delay>12h</delay>
<history>30d</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>Disk</name>
</application>
</applications>
</item_prototype>
<item_prototype>
<name>[{#SNMPVALUE}]_DiskModel</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.4526.22.3.1.5.{#SNMPINDEX}</snmp_oid>
<key>DiskModel[{#SNMPVALUE}]</key>
<delay>8h</delay>
<history>30d</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>Disk</name>
</application>
</applications>
</item_prototype>
<item_prototype>
<name>[{#SNMPVALUE}]_DiskSerial</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.4526.22.3.1.4.{#SNMPINDEX}</snmp_oid>
<key>DiskSerial[{#SNMPVALUE}]</key>
<delay>8h</delay>
<history>30d</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>Disk</name>
</application>
</applications>
</item_prototype>
<item_prototype>
<name>[{#SNMPVALUE}]_DiskSlotName</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.4526.22.3.1.3.{#SNMPINDEX}</snmp_oid>
<key>DiskSlotName[{#SNMPVALUE}]</key>
<delay>1h</delay>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>Disk</name>
</application>
</applications>
</item_prototype>
<item_prototype>
<name>[{#SNMPVALUE}]_DiskState</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.4526.22.3.1.9.{#SNMPINDEX}</snmp_oid>
<key>DiskState[{#SNMPVALUE}]</key>
<delay>5m</delay>
<history>30d</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>Disk</name>
</application>
</applications>
<trigger_prototypes>
<trigger_prototype>
<expression>{regexp(&quot;ONLINE&quot;)}&lt;&gt;1</expression>
<name>Disk [{#SNMPVALUE}] status on {HOST.NAME} is {ITEM.LASTVALUE1}</name>
<priority>DISASTER</priority>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
<item_prototype>
<name>[{#SNMPVALUE}]_DiskTemperature</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.4526.22.3.1.10.{#SNMPINDEX}</snmp_oid>
<key>DiskTemperature[{#SNMPVALUE}]</key>
<delay>5m</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>°C</units>
<applications>
<application>
<name>Disk</name>
</application>
</applications>
<trigger_prototypes>
<trigger_prototype>
<expression>{last(0)}&gt;{$NETGEAR_HD_TEMP_WARN}</expression>
<name>Disk [{#SNMPVALUE}] temp is {ITEM.LASTVALUE1}</name>
<priority>HIGH</priority>
<description>Disk temp is more than 50C</description>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
</item_prototypes>
<graph_prototypes>
<graph_prototype>
<name>Disk Temperature {#SNMPVALUE}</name>
<show_work_period>NO</show_work_period>
<show_triggers>NO</show_triggers>
<graph_items>
<graph_item>
<drawtype>GRADIENT_LINE</drawtype>
<color>00C800</color>
<item>
<host>Template_Netgear_ReadyNas</host>
<key>DiskTemperature[{#SNMPVALUE}]</key>
</item>
</graph_item>
</graph_items>
</graph_prototype>
</graph_prototypes>
</discovery_rule>
<discovery_rule>
<name>Discovery_Fan</name>
<type>SNMP_AGENT</type>
<snmp_oid>discovery[{#SNMPVALUE},.1.3.6.1.4.1.4526.22.4.1.1]</snmp_oid>
<key>Fan</key>
<delay>1h</delay>
<item_prototypes>
<item_prototype>
<name>[{#SNMPVALUE}]_FanRPM</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.4526.22.4.1.2.{#SNMPINDEX}</snmp_oid>
<key>FanRPM[{#SNMPVALUE}]</key>
<delay>5m</delay>
<trends>1825d</trends>
<units>rpm</units>
<applications>
<application>
<name>Fans</name>
</application>
</applications>
</item_prototype>
<item_prototype>
<name>[{#SNMPVALUE}]_FanStatus</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.4526.22.4.1.3.{#SNMPINDEX}</snmp_oid>
<key>FanStatus[{#SNMPVALUE}]</key>
<delay>5m</delay>
<history>30d</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>Fans</name>
</application>
</applications>
<trigger_prototypes>
<trigger_prototype>
<expression>{regexp(&quot;ok&quot;)}&lt;&gt;1</expression>
<name>Fan [{#SNMPVALUE}] status is {ITEM.LASTVALUE1}</name>
<priority>HIGH</priority>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
<item_prototype>
<name>[{#SNMPVALUE}]_FanType</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.4526.22.4.1.4.{#SNMPINDEX}</snmp_oid>
<key>FanType[{#SNMPVALUE}]</key>
<delay>8h</delay>
<history>30d</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>Fans</name>
</application>
</applications>
</item_prototype>
</item_prototypes>
<graph_prototypes>
<graph_prototype>
<name>Fan RPM {#SNMPVALUE}</name>
<graph_items>
<graph_item>
<drawtype>GRADIENT_LINE</drawtype>
<color>1A7C11</color>
<item>
<host>Template_Netgear_ReadyNas</host>
<key>FanRPM[{#SNMPVALUE}]</key>
</item>
</graph_item>
</graph_items>
</graph_prototype>
</graph_prototypes>
</discovery_rule>
<discovery_rule>
<name>Discovery_Temperatures</name>
<type>SNMP_AGENT</type>
<snmp_oid>discovery[{#SNMPVALUE},.1.3.6.1.4.1.4526.22.5.1.1]</snmp_oid>
<key>Temperature</key>
<delay>1h</delay>
<item_prototypes>
<item_prototype>
<name>[{#SNMPVALUE}]_temperatureMax</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.4526.22.5.1.5.{#SNMPINDEX}</snmp_oid>
<key>TemperatureMax[{#SNMPVALUE}]</key>
<delay>1h</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>°C</units>
<applications>
<application>
<name>Temperatures</name>
</application>
</applications>
</item_prototype>
<item_prototype>
<name>[{#SNMPVALUE}]_temperatureMin</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.4526.22.5.1.4.{#SNMPINDEX}</snmp_oid>
<key>TemperatureMin[{#SNMPVALUE}]</key>
<delay>1h</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>°C</units>
<applications>
<application>
<name>Temperatures</name>
</application>
</applications>
</item_prototype>
<item_prototype>
<name>[{#SNMPVALUE}]_temperatureType</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.4526.22.5.1.3.{#SNMPINDEX}</snmp_oid>
<key>TemperatureType[{#SNMPVALUE}]</key>
<delay>1h</delay>
<history>30d</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>Temperatures</name>
</application>
</applications>
</item_prototype>
<item_prototype>
<name>[{#SNMPVALUE}]_temperatureValue</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.4526.22.5.1.2.{#SNMPINDEX}</snmp_oid>
<key>TemperatureValue[{#SNMPVALUE}]</key>
<delay>5m</delay>
<trends>1825d</trends>
<units>°</units>
<description>We use a unsigned int to prevent -1° Temperatures which are sometimes returned by the ReadyNAS.&#13;
Seems to be a know problem in ReadyNAS SNMP implementation.&#13;
&#13;
https://community.netgear.com/t5/ReadyNAS-in-Business/Insane-disk-temp-readings-from-ReadyNAS-3100/td-p/928290</description>
<applications>
<application>
<name>Temperatures</name>
</application>
</applications>
</item_prototype>
</item_prototypes>
<trigger_prototypes>
<trigger_prototype>
<expression>{Template_Netgear_ReadyNas:TemperatureValue[{#SNMPVALUE}].last()}&lt;{Template_Netgear_ReadyNas:TemperatureMin[{#SNMPVALUE}].last()} or {Template_Netgear_ReadyNas:TemperatureValue[{#SNMPVALUE}].last()}&gt;{Template_Netgear_ReadyNas:TemperatureMax[{#SNMPVALUE}].last()}</expression>
<name>Temperature [{#SNMPVALUE}] is {ITEM.LASTVALUE1}</name>
<priority>AVERAGE</priority>
</trigger_prototype>
</trigger_prototypes>
<graph_prototypes>
<graph_prototype>
<name>Temperature {#SNMPVALUE}</name>
<ymin_type_1>ITEM</ymin_type_1>
<ymin_item_1>
<host>Template_Netgear_ReadyNas</host>
<key>TemperatureMin[{#SNMPVALUE}]</key>
</ymin_item_1>
<ymax_type_1>ITEM</ymax_type_1>
<ymax_item_1>
<host>Template_Netgear_ReadyNas</host>
<key>TemperatureMax[{#SNMPVALUE}]</key>
</ymax_item_1>
<graph_items>
<graph_item>
<drawtype>GRADIENT_LINE</drawtype>
<color>1A7C11</color>
<item>
<host>Template_Netgear_ReadyNas</host>
<key>TemperatureValue[{#SNMPVALUE}]</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<color>EF9A9A</color>
<item>
<host>Template_Netgear_ReadyNas</host>
<key>TemperatureMin[{#SNMPVALUE}]</key>
</item>
</graph_item>
<graph_item>
<sortorder>2</sortorder>
<color>FFCA28</color>
<item>
<host>Template_Netgear_ReadyNas</host>
<key>TemperatureMax[{#SNMPVALUE}]</key>
</item>
</graph_item>
</graph_items>
</graph_prototype>
</graph_prototypes>
</discovery_rule>
<discovery_rule>
<name>Discovery_Volume</name>
<type>SNMP_AGENT</type>
<snmp_oid>discovery[{#SNMPVALUE},.1.3.6.1.4.1.4526.22.7.1.1]</snmp_oid>
<key>Volume</key>
<delay>1h</delay>
<item_prototypes>
<item_prototype>
<name>[{#SNMPVALUE}]_VolumeFreeSpace</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.4526.22.7.1.6.{#SNMPINDEX}</snmp_oid>
<key>volumeFreeSpace[{#SNMPVALUE}]</key>
<delay>5m</delay>
<trends>1825d</trends>
<units>B</units>
<applications>
<application>
<name>Volume</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>1048576</params>
</step>
</preprocessing>
</item_prototype>
<item_prototype>
<name>[{#SNMPVALUE}]_VolumeName</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.4526.22.7.1.2.{#SNMPINDEX}</snmp_oid>
<key>volumeName[{#SNMPVALUE}]</key>
<delay>1h</delay>
<history>30d</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>Volume</name>
</application>
</applications>
</item_prototype>
<item_prototype>
<name>[{#SNMPVALUE}]_volumeRAIDLevel</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.4526.22.7.1.3.{#SNMPINDEX}</snmp_oid>
<key>volumeRAIDLevel[{#SNMPVALUE}]</key>
<delay>8h</delay>
<history>30d</history>
<trends>0</trends>
<applications>
<application>
<name>Volume</name>
</application>
</applications>
</item_prototype>
<item_prototype>
<name>[{#SNMPVALUE}]_VolumeSize</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.4526.22.7.1.5.{#SNMPINDEX}</snmp_oid>
<key>volumeSize[{#SNMPVALUE}]</key>
<delay>1h</delay>
<trends>1825d</trends>
<units>B</units>
<applications>
<application>
<name>Volume</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>1048576</params>
</step>
</preprocessing>
</item_prototype>
<item_prototype>
<name>[{#SNMPVALUE}]_VolumeStatus</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.4526.22.7.1.4.{#SNMPINDEX}</snmp_oid>
<key>volumeStatus[{#SNMPVALUE}]</key>
<delay>5m</delay>
<history>30d</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>Volume</name>
</application>
</applications>
<trigger_prototypes>
<trigger_prototype>
<expression>{regexp(&quot;REDUNDANT&quot;)}&lt;&gt;1 and {regexp(&quot;UNPROTECTED&quot;)}&lt;&gt;1</expression>
<name>Volume[{#SNMPVALUE}] on {HOST.NAME} is {ITEM.LASTVALUE1}</name>
<priority>HIGH</priority>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
<item_prototype>
<name>[{#SNMPVALUE}]_VolumeUsedSpace</name>
<type>CALCULATED</type>
<key>volumeUsedSpace[{#SNMPVALUE}]</key>
<delay>5m</delay>
<trends>1825d</trends>
<units>B</units>
<params>last(volumeSize[{#SNMPVALUE}])-last(volumeFreeSpace[{#SNMPVALUE}])</params>
<applications>
<application>
<name>Disk</name>
</application>
</applications>
</item_prototype>
</item_prototypes>
<trigger_prototypes>
<trigger_prototype>
<expression>({Template_Netgear_ReadyNas:volumeFreeSpace[{#SNMPVALUE}].last()} / {Template_Netgear_ReadyNas:volumeSize[{#SNMPVALUE}].last()} * 100) &gt; {$NETGEAR_VOL_USAGE_WARN}</expression>
<name>Volume {#SNMPVALUE} has {ITEM.LASTVALUE1} free space</name>
<priority>WARNING</priority>
</trigger_prototype>
</trigger_prototypes>
<graph_prototypes>
<graph_prototype>
<name>Volume Size {#SNMPVALUE}</name>
<ymin_type_1>FIXED</ymin_type_1>
<ymax_type_1>ITEM</ymax_type_1>
<ymax_item_1>
<host>Template_Netgear_ReadyNas</host>
<key>volumeSize[{#SNMPVALUE}]</key>
</ymax_item_1>
<graph_items>
<graph_item>
<drawtype>GRADIENT_LINE</drawtype>
<color>E1F5FE</color>
<item>
<host>Template_Netgear_ReadyNas</host>
<key>volumeSize[{#SNMPVALUE}]</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<color>26A69A</color>
<item>
<host>Template_Netgear_ReadyNas</host>
<key>volumeUsedSpace[{#SNMPVALUE}]</key>
</item>
</graph_item>
</graph_items>
</graph_prototype>
</graph_prototypes>
</discovery_rule>
</discovery_rules>
<macros>
<macro>
<macro>{$NETGEAR_HD_TEMP_WARN}</macro>
<value>50</value>
</macro>
<macro>
<macro>{$NETGEAR_VOL_USAGE_WARN}</macro>
<value>90</value>
</macro>
</macros>
</template>
</templates>
</zabbix_export>

View File

@ -0,0 +1,195 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-06-19T12:16:26Z</date>
<groups>
<group>
<name>Modèles</name>
</group>
</groups>
<templates>
<template>
<template>Template_OS_Fortigate</template>
<name>Template_OS_Fortigate</name>
<templates>
<template>
<name>Template_Switch_Generic</name>
</template>
</templates>
<groups>
<group>
<name>Modèles</name>
</group>
</groups>
<applications>
<application>
<name>Logiciel</name>
</application>
<application>
<name>Matériel</name>
</application>
<application>
<name>Mémoire</name>
</application>
<application>
<name>Performances</name>
</application>
<application>
<name>Processeur</name>
</application>
<application>
<name>Réseau</name>
</application>
</applications>
<items>
<item>
<name>Connexions en cours</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.12356.101.4.1.8.0</snmp_oid>
<key>fortigate.conn.num</key>
<trends>1825d</trends>
<applications>
<application>
<name>Réseau</name>
</application>
</applications>
</item>
<item>
<name>Occupation CPU</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.12356.101.4.1.3.0</snmp_oid>
<key>fortigate.cpu.usage</key>
<delay>30s</delay>
<trends>1825d</trends>
<units>%</units>
<applications>
<application>
<name>Matériel</name>
</application>
<application>
<name>Performances</name>
</application>
<application>
<name>Processeur</name>
</application>
</applications>
<triggers>
<trigger>
<expression>{avg(10)}&gt;75</expression>
<recovery_mode>RECOVERY_EXPRESSION</recovery_mode>
<recovery_expression>{avg(10)}&lt;70</recovery_expression>
<name>Occupation CPU importante</name>
<priority>WARNING</priority>
</trigger>
</triggers>
</item>
<item>
<name>Occupation mémoire</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.12356.101.4.1.4.0</snmp_oid>
<key>fortigate.mem.usage</key>
<delay>30s</delay>
<trends>1825d</trends>
<units>%</units>
<applications>
<application>
<name>Matériel</name>
</application>
<application>
<name>Mémoire</name>
</application>
<application>
<name>Performances</name>
</application>
</applications>
<triggers>
<trigger>
<expression>{avg(10)}&gt;80</expression>
<recovery_mode>RECOVERY_EXPRESSION</recovery_mode>
<recovery_expression>{avg(10)}&lt;75</recovery_expression>
<name>Occupation Mémoire importante</name>
<priority>WARNING</priority>
</trigger>
</triggers>
</item>
<item>
<name>Numéro de série</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.12356.100.1.1.1.0</snmp_oid>
<key>fortigate.serial</key>
<delay>6h</delay>
<trends>0</trends>
<value_type>CHAR</value_type>
<applications>
<application>
<name>Matériel</name>
</application>
</applications>
</item>
<item>
<name>Version du firmware</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.12356.101.4.1.1.0</snmp_oid>
<key>fortigate.version</key>
<delay>30m</delay>
<trends>0</trends>
<value_type>CHAR</value_type>
<applications>
<application>
<name>Logiciel</name>
</application>
</applications>
<triggers>
<trigger>
<expression>{diff()}=1</expression>
<name>La version du firmware a changé</name>
<priority>WARNING</priority>
</trigger>
</triggers>
</item>
</items>
</template>
</templates>
<graphs>
<graph>
<name>Nombre de connexions</name>
<graph_items>
<graph_item>
<drawtype>GRADIENT_LINE</drawtype>
<color>00BFFF</color>
<item>
<host>Template_OS_Fortigate</host>
<key>fortigate.conn.num</key>
</item>
</graph_item>
</graph_items>
</graph>
<graph>
<name>Occupation CPU</name>
<graph_items>
<graph_item>
<drawtype>GRADIENT_LINE</drawtype>
<color>1A7C11</color>
<item>
<host>Template_OS_Fortigate</host>
<key>fortigate.cpu.usage</key>
</item>
</graph_item>
</graph_items>
</graph>
<graph>
<name>Occupation Mémoire</name>
<ymin_type_1>FIXED</ymin_type_1>
<graph_items>
<graph_item>
<drawtype>GRADIENT_LINE</drawtype>
<color>FF0000</color>
<item>
<host>Template_OS_Fortigate</host>
<key>fortigate.mem.usage</key>
</item>
</graph_item>
</graph_items>
</graph>
</graphs>
</zabbix_export>

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2020-10-20T16:41:47Z</date>
<date>2021-09-22T16:04:27Z</date>
<groups>
<group>
<name>Modèles</name>
@ -112,7 +112,7 @@
</items>
<discovery_rules>
<discovery_rule>
<name>Découverte onduleurs</name>
<name>UPS discovery</name>
<key>hardware.ups.discovery[]</key>
<delay>1800</delay>
<lifetime>1d</lifetime>
@ -120,7 +120,9 @@
<item_prototype>
<name>UPS: Taux de charge de la batterie pour {#UPSNAME}</name>
<key>hardware.ups[{#UPSNAME},battery.charge]</key>
<trends>1825d</trends>
<delay>2m</delay>
<history>60d</history>
<trends>1095d</trends>
<units>%</units>
<applications>
<application>
@ -132,7 +134,9 @@
<item_prototype>
<name>UPS: Charge de l'onduleur {#UPSNAME}</name>
<key>hardware.ups[{#UPSNAME},ups.load]</key>
<trends>1825d</trends>
<delay>2m</delay>
<history>60d</history>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
@ -152,6 +156,8 @@
<item_prototype>
<name>UPS: État de l'onduleur {#UPSNAME}</name>
<key>hardware.ups[{#UPSNAME},ups.status]</key>
<delay>2m</delay>
<history>30d</history>
<trends>0</trends>
<value_type>CHAR</value_type>
<applications>
@ -231,7 +237,8 @@
<type>DEPENDENT</type>
<key>httpd[{#HTTPD_STATUS_URI},busyworkers]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<applications>
<application>
<name>Applications</name>
@ -253,7 +260,8 @@
<type>DEPENDENT</type>
<key>httpd[{#HTTPD_STATUS_URI},bytesperreq]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>B</units>
<applications>
@ -277,7 +285,8 @@
<type>DEPENDENT</type>
<key>httpd[{#HTTPD_STATUS_URI},bytespersec]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>b/s</units>
<applications>
@ -312,7 +321,8 @@
<type>DEPENDENT</type>
<key>httpd[{#HTTPD_STATUS_URI},idleworkers]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<applications>
<application>
<name>Applications</name>
@ -334,7 +344,8 @@
<type>DEPENDENT</type>
<key>httpd[{#HTTPD_STATUS_URI},reqpersec]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>r/s</units>
<applications>
@ -425,8 +436,8 @@
<type>DEPENDENT</type>
<key>nginx.status.dep[{#NGINX_STATUS_URI},active_conn]</key>
<delay>0</delay>
<history>180d</history>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<applications>
<application>
<name>Applications</name>
@ -448,8 +459,8 @@
<type>DEPENDENT</type>
<key>nginx.status.dep[{#NGINX_STATUS_URI},conn_per_sec]</key>
<delay>0</delay>
<history>180d</history>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>c/s</units>
<applications>
@ -477,8 +488,8 @@
<type>DEPENDENT</type>
<key>nginx.status.dep[{#NGINX_STATUS_URI},keep_alive_conn]</key>
<delay>0</delay>
<history>180d</history>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<applications>
<application>
<name>Applications</name>
@ -500,8 +511,8 @@
<type>DEPENDENT</type>
<key>nginx.status.dep[{#NGINX_STATUS_URI},req_per_sec]</key>
<delay>0</delay>
<history>180d</history>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>r/s</units>
<applications>
@ -585,11 +596,12 @@
<lifetime>1h</lifetime>
<item_prototypes>
<item_prototype>
<name>Latence du node {#PVE_NODE_NAME}</name>
<name>Latency for node {#PVE_NODE_NAME}</name>
<type>DEPENDENT</type>
<key>net.icmp.info[{#PVE_NODE_IP},latency]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>s</units>
<applications>
@ -618,11 +630,12 @@
</trigger_prototypes>
</item_prototype>
<item_prototype>
<name>Taux de perte de ping pour le node {#PVE_NODE_NAME}</name>
<name>Ping loss for node {#PVE_NODE_NAME}</name>
<type>DEPENDENT</type>
<key>net.icmp.info[{#PVE_NODE_IP},loss]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
@ -651,11 +664,12 @@
</trigger_prototypes>
</item_prototype>
<item_prototype>
<name>Ping du node {#PVE_NODE_NAME}</name>
<name>Ping response for node {#PVE_NODE_NAME}</name>
<type>DEPENDENT</type>
<key>net.icmp.info[{#PVE_NODE_IP},respond]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<applications>
<application>
<name>Latency</name>
@ -675,9 +689,9 @@
</master_item>
</item_prototype>
<item_prototype>
<name>Stat ICMP du node {#PVE_NODE_NAME}</name>
<name>ICMP stats for node {#PVE_NODE_NAME}</name>
<key>net.icmp[{#PVE_NODE_IP},all]</key>
<delay>5s</delay>
<delay>30s</delay>
<history>0</history>
<trends>0</trends>
<value_type>TEXT</value_type>
@ -768,6 +782,7 @@
<name>MegaRAID status ({#CONTROLLERNO})</name>
<key>raid.mega.status[{$MEGARAID_SPARES},{$MEGARAID_IGNORE_OTHER},{$MEGARAID_IGNORE_MEDIA},{#CONTROLLERNO}]</key>
<delay>15m</delay>
<history>30d</history>
<trends>0</trends>
<value_type>CHAR</value_type>
<applications>
@ -836,7 +851,7 @@
<item_prototype>
<name>{#DEVICE} status</name>
<key>raid.sw.status[{#DEVICE}]</key>
<delay>5m</delay>
<delay>10m</delay>
<history>30d</history>
<trends>0</trends>
<value_type>CHAR</value_type>
@ -892,7 +907,7 @@
<item_prototype>
<name>VDO: Info for {#VDO_VOL}</name>
<key>vfs.vdo.vol.all[{#VDO_VOL}]</key>
<delay>10m</delay>
<delay>15m</delay>
<history>0</history>
<trends>0</trends>
<value_type>TEXT</value_type>
@ -907,6 +922,7 @@
<type>DEPENDENT</type>
<key>vfs.vdo.vol.info[{#VDO_VOL},operating_mode]</key>
<delay>0</delay>
<history>30d</history>
<trends>0</trends>
<value_type>CHAR</value_type>
<applications>
@ -939,7 +955,8 @@
<type>DEPENDENT</type>
<key>vfs.vdo.vol.info[{#VDO_VOL},saving_percent]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<units>%</units>
<applications>
<application>
@ -964,7 +981,8 @@
<type>DEPENDENT</type>
<key>vfs.vdo.vol.info[{#VDO_VOL},used_percent]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<units>%</units>
<applications>
<application>
@ -996,7 +1014,8 @@
<type>DEPENDENT</type>
<key>vfs.vdo.vol.info[{#VDO_VOL},version]</key>
<delay>0</delay>
<trends>1825d</trends>
<history>60d</history>
<trends>1095d</trends>
<preprocessing>
<step>
<type>JSONPATH</type>
@ -1019,6 +1038,7 @@
<type>DEPENDENT</type>
<key>vfs.vdo.vol.info[{#VDO_VOL},write_policy]</key>
<delay>0</delay>
<history>30d</history>
<trends>0</trends>
<value_type>CHAR</value_type>
<applications>
@ -1142,6 +1162,12 @@
</template>
</templates>
<triggers>
<trigger>
<expression>({Template_OS_Linux_Server:system.uptime.last(0)}&lt;{$REBOOT_WARN_DAY} and ({Template_OS_Linux_Server:system.uptime.time(0)}&gt;090000 and {Template_OS_Linux_Server:system.uptime.time(0)}&lt;230000)) or ({Template_OS_Linux_Server:system.uptime.last(0)}&lt;{$REBOOT_WARN_NIGHT} and ({Template_OS_Linux_Server:system.uptime.time(0)}&gt;230000 or {Template_OS_Linux_Server:system.uptime.time(0)}&lt;090000))</expression>
<name>System has just rebooted</name>
<priority>INFO</priority>
<manual_close>YES</manual_close>
</trigger>
<trigger>
<expression>{Template_OS_Linux_Server:agent.ping.nodata({$ZBX_UNREACHABLE_TIMEOUT})}=1 and {Template_OS_Linux_Server:icmpping[,2,,,2000].nodata(120,strict)} = 0 and {Template_OS_Linux_Server:icmpping[,2,,,2000].sum(120)}&gt;0</expression>
<name>Unreachable Zabbix agent</name>
@ -1158,11 +1184,5 @@
</dependency>
</dependencies>
</trigger>
<trigger>
<expression>({Template_OS_Linux_Server:system.uptime.last(0)}&lt;{$REBOOT_WARN_DAY} and ({Template_OS_Linux_Server:system.uptime.last(0)}&gt;090000 and {Template_OS_Linux_Server:system.uptime.last(0)}&lt;230000)) or ({Template_OS_Linux_Server:system.uptime.last(0)}&lt;{$REBOOT_WARN_NIGHT} and ({Template_OS_Linux_Server:system.uptime.last(0)}&gt;230000 or {Template_OS_Linux_Server:system.uptime.last(0)}&lt;090000))</expression>
<name>{HOST.NAME} rebooted {ITEM.LASTVALUE1} ago</name>
<priority>INFO</priority>
<manual_close>YES</manual_close>
</trigger>
</triggers>
</zabbix_export>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>4.4</version>
<date>2020-03-02T14:08:55Z</date>
<version>5.0</version>
<date>2021-06-19T12:17:25Z</date>
<groups>
<group>
<name>Modèles</name>
@ -46,12 +46,16 @@
<application>
<name>Processus</name>
</application>
<application>
<name>System</name>
</application>
</applications>
<items>
<item>
<name>TCP ping of the agent</name>
<key>agent.ping</key>
<delay>5m</delay>
<history>60d</history>
<trends>1825d</trends>
<applications>
<application>
@ -70,7 +74,7 @@
<dependencies>
<dependency>
<name>No ping response from {HOST.IP1}</name>
<expression>{Template_OS_PfSense2:icmpping[,2,,,2000].sum({$DOWN_CRITICAL})}=0 and {Template_OS_PfSense2:icmpping[,2,,,2000].dayofweek(0)}&gt;={$PING_ALERT_FROM_DAY} and {Template_OS_PfSense2:icmpping[,2,,,2000].dayofweek(0)}&lt;={$PING_ALERT_TO_DAY} and {Template_OS_PfSense2:icmpping[,2,,,2000].time(0)}&gt;={$PING_ALERT_FROM_HOUR} and {Template_OS_PfSense2:icmpping[,2,,,2000].time(0)}&lt;={$PING_ALERT_TO_HOUR}</expression>
<expression>{Template_OS_PfSense2:icmpping[,2,,,2000].nodata(180,strict)}=0 and {Template_OS_PfSense2:icmpping[,2,,,2000].sum({$DOWN_CRITICAL})}=0 and {Template_OS_PfSense2:icmpping[,2,,,2000].dayofweek(0)}&gt;={$PING_ALERT_FROM_DAY} and {Template_OS_PfSense2:icmpping[,2,,,2000].dayofweek(0)}&lt;={$PING_ALERT_TO_DAY} and {Template_OS_PfSense2:icmpping[,2,,,2000].time(0)}&gt;={$PING_ALERT_FROM_HOUR} and {Template_OS_PfSense2:icmpping[,2,,,2000].time(0)}&lt;={$PING_ALERT_TO_HOUR}</expression>
<recovery_expression>{Template_OS_PfSense2:icmpping[,2,,,2000].sum(180)}&gt;3</recovery_expression>
</dependency>
</dependencies>
@ -80,21 +84,34 @@
<item>
<name>Maximum number of opened files</name>
<key>kernel.maxfiles</key>
<delay>1h</delay>
<history>30d</history>
<trends>0</trends>
<units>fichiers</units>
<delay>2h</delay>
<history>60d</history>
<trends>1825d</trends>
<description>It could be increased by using sysctrl utility or modifying file /etc/sysctl.conf.</description>
<applications>
<application>
<name>Processus</name>
<name>System</name>
</application>
</applications>
</item>
<item>
<name>Maximum number of processes</name>
<key>kernel.maxproc</key>
<delay>2h</delay>
<history>60d</history>
<trends>1825d</trends>
<description>It could be increased by using sysctrl utility or modifying file /etc/sysctl.conf.</description>
<applications>
<application>
<name>System</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>DNS Resolution response for $2</name>
<key>net.dns.record[127.0.0.1,{$DNS_NAME_CHECK},A,,]</key>
<history>30d</history>
<delay>5m</delay>
<history>15d</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
@ -108,7 +125,7 @@
<name>DNS resolution for $2 is working</name>
<key>net.dns[127.0.0.1,{$DNS_NAME_CHECK},A,,]</key>
<delay>5m</delay>
<history>30d</history>
<history>15d</history>
<trends>0</trends>
<applications>
<application>
@ -125,22 +142,178 @@
</triggers>
</item>
<item>
<name>Opened files</name>
<key>openfiles.num</key>
<name>MBUF Cache</name>
<key>pfsense.mbuf.cache</key>
<delay>5m</delay>
<history>60d</history>
<trends>1825d</trends>
<units>fichiers</units>
<applications>
<application>
<name>Processus</name>
<name>Memory</name>
</application>
<application>
<name>Network</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>MBUF Current</name>
<key>pfsense.mbuf.current</key>
<delay>5m</delay>
<history>60d</history>
<trends>1825d</trends>
<applications>
<application>
<name>Memory</name>
</application>
<application>
<name>Network</name>
</application>
</applications>
</item>
<item>
<name>MBUF Max</name>
<key>pfsense.mbuf.max</key>
<delay>1h</delay>
<history>60d</history>
<trends>1825d</trends>
<applications>
<application>
<name>Memory</name>
</application>
<application>
<name>Network</name>
</application>
</applications>
</item>
<item>
<name>MBUF Total Used (percent)</name>
<type>CALCULATED</type>
<key>pfsense.mbuf.ptotal</key>
<delay>5m</delay>
<history>60d</history>
<trends>1825d</trends>
<params>((last(pfsense.mbuf.current) + last(pfsense.mbuf.cache)) * 100) / last(pfsense.mbuf.max)</params>
<applications>
<application>
<name>Memory</name>
</application>
<application>
<name>Network</name>
</application>
</applications>
<triggers>
<trigger>
<expression>{last()}&gt;80</expression>
<recovery_mode>RECOVERY_EXPRESSION</recovery_mode>
<recovery_expression>{last()}&lt;75</recovery_expression>
<name>MBUF used at {ITEM.LASTVALUE1}</name>
<priority>WARNING</priority>
<dependencies>
<dependency>
<name>MBUF used at {ITEM.LASTVALUE1}</name>
<expression>{Template_OS_PfSense2:pfsense.mbuf.ptotal.last()}&gt;90</expression>
<recovery_expression>{Template_OS_PfSense2:pfsense.mbuf.ptotal.last()}&lt;85</recovery_expression>
</dependency>
</dependencies>
</trigger>
<trigger>
<expression>{last()}&gt;90</expression>
<recovery_mode>RECOVERY_EXPRESSION</recovery_mode>
<recovery_expression>{last()}&lt;85</recovery_expression>
<name>MBUF used at {ITEM.LASTVALUE1}</name>
<priority>HIGH</priority>
</trigger>
</triggers>
</item>
<item>
<name>States Table Current</name>
<key>pfsense.states.current</key>
<delay>2m</delay>
<history>60d</history>
<trends>1825d</trends>
<applications>
<application>
<name>Memory</name>
</application>
</applications>
</item>
<item>
<name>States Table Max</name>
<key>pfsense.states.max</key>
<delay>10m</delay>
<history>60d</history>
<trends>1825d</trends>
<applications>
<application>
<name>Memory</name>
</application>
</applications>
<preprocessing>
<step>
<type>DISCARD_UNCHANGED_HEARTBEAT</type>
<params>2h</params>
</step>
</preprocessing>
</item>
<item>
<name>States Table Current (percent)</name>
<type>CALCULATED</type>
<key>pfsense.states.pused</key>
<delay>2m</delay>
<history>60d</history>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<params>(last(pfsense.states.current) * 100) / last(pfsense.states.max)</params>
<applications>
<application>
<name>Memory</name>
</application>
</applications>
<triggers>
<trigger>
<expression>{last()}&gt;80</expression>
<recovery_mode>RECOVERY_EXPRESSION</recovery_mode>
<recovery_expression>{last()}&lt;75</recovery_expression>
<name>States table used at {ITEM.LASTVALUE1}</name>
<priority>WARNING</priority>
<dependencies>
<dependency>
<name>States table used at {ITEM.LASTVALUE1}</name>
<expression>{Template_OS_PfSense2:pfsense.states.pused.last()}&gt;90</expression>
<recovery_expression>{Template_OS_PfSense2:pfsense.states.pused.last()}&lt;85</recovery_expression>
</dependency>
</dependencies>
</trigger>
<trigger>
<expression>{last()}&gt;90</expression>
<recovery_mode>RECOVERY_EXPRESSION</recovery_mode>
<recovery_expression>{last()}&lt;85</recovery_expression>
<name>States table used at {ITEM.LASTVALUE1}</name>
<priority>HIGH</priority>
</trigger>
</triggers>
</item>
<item>
<name>pfSense Installed Version</name>
<key>pfsense.value[system,installed_version]</key>
<delay>1h</delay>
<history>60d</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<preprocessing>
<step>
<type>DISCARD_UNCHANGED_HEARTBEAT</type>
<params>1d</params>
</step>
</preprocessing>
</item>
<item>
<name>Number of active processes</name>
<key>proc.num[,,run]</key>
<delay>2m</delay>
<history>60d</history>
<trends>1825d</trends>
<units>processus</units>
<applications>
@ -161,7 +334,7 @@
<name>Number of sshd processes</name>
<key>proc.num[sshd]</key>
<delay>5m</delay>
<history>30d</history>
<history>60d</history>
<trends>0</trends>
<applications>
<application>
@ -181,6 +354,7 @@
<name>Number of processes</name>
<key>proc.num[]</key>
<delay>5m</delay>
<history>60d</history>
<trends>1825d</trends>
<units>processus</units>
<request_method>POST</request_method>
@ -195,6 +369,7 @@
<item>
<name>CPU Load</name>
<key>system.cpu.load[,avg1]</key>
<history>60d</history>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<applications>
@ -208,6 +383,7 @@
<name>CPU Load (5min)</name>
<key>system.cpu.load[,avg5]</key>
<delay>5m</delay>
<history>60d</history>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<applications>
@ -221,6 +397,7 @@
<name>CPU Load (15min)</name>
<key>system.cpu.load[,avg15]</key>
<delay>15m</delay>
<history>60d</history>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<applications>
@ -230,10 +407,30 @@
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Context switches per second</name>
<key>system.cpu.switches</key>
<delay>60</delay>
<history>60d</history>
<trends>1825d</trends>
<units>sps</units>
<applications>
<application>
<name>Processor</name>
</application>
</applications>
<preprocessing>
<step>
<type>CHANGE_PER_SECOND</type>
<params/>
</step>
</preprocessing>
</item>
<item>
<name>CPU usage: $2</name>
<key>system.cpu.util[,interrupt,avg1]</key>
<delay>45s</delay>
<history>60d</history>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
@ -248,6 +445,7 @@
<name>CPU usage: $2</name>
<key>system.cpu.util[,nice,avg1]</key>
<delay>45s</delay>
<history>60d</history>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
@ -262,6 +460,7 @@
<name>CPU usage: $2</name>
<key>system.cpu.util[,system,avg1]</key>
<delay>45s</delay>
<history>60d</history>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
@ -276,6 +475,7 @@
<name>CPU usage: $2</name>
<key>system.cpu.util[,user,avg1]</key>
<delay>45s</delay>
<history>60d</history>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
@ -291,6 +491,7 @@
<type>CALCULATED</type>
<key>system.swap.size.used</key>
<delay>10m</delay>
<history>60d</history>
<trends>1825d</trends>
<units>B</units>
<params>last(&quot;system.swap.size[,total]&quot;)-last(&quot;system.swap.size[,free]&quot;)</params>
@ -305,6 +506,7 @@
<name>Swap: $2</name>
<key>system.swap.size[,free]</key>
<delay>10m</delay>
<history>60d</history>
<trends>1825d</trends>
<units>B</units>
<applications>
@ -316,10 +518,10 @@
</item>
<item>
<name>Free swap space in %</name>
<snmp_community>public</snmp_community>
<snmp_oid>interfaces.ifTable.ifEntry.ifInOctets.1</snmp_oid>
<key>system.swap.size[,pfree]</key>
<delay>5m</delay>
<history>60d</history>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
@ -329,6 +531,7 @@
<name>Swap: $2</name>
<key>system.swap.size[,pused]</key>
<delay>10m</delay>
<history>60d</history>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
@ -350,6 +553,7 @@
<name>Swap: $2</name>
<key>system.swap.size[,total]</key>
<delay>1h</delay>
<history>60d</history>
<trends>1825d</trends>
<units>B</units>
<applications>
@ -363,13 +567,14 @@
<name>Uptime</name>
<key>system.uptime</key>
<delay>10m</delay>
<history>60d</history>
<trends>1825d</trends>
<units>s</units>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>({last(0)}&lt;{$REBOOT_WARN_DAY} and ({last(0)}&gt;090000 and {last(0)}&lt;230000)) or ({last(0)}&lt;{$REBOOT_WARN_NIGHT} and ({last(0)}&gt;230000 or {last(0)}&lt;090000))</expression>
<name>{HOSTNAME} rebooted {ITEM.LASTVALUE1} ago</name>
<expression>({last(0)}&lt;{$REBOOT_WARN_DAY} and ({time(0)}&gt;090000 and {time(0)}&lt;230000)) or ({last(0)}&lt;{$REBOOT_WARN_NIGHT} and ({time(0)}&gt;230000 or {time(0)}&lt;090000))</expression>
<name>System has rebooted</name>
<priority>INFO</priority>
</trigger>
</triggers>
@ -378,7 +583,13 @@
<name>Connected users</name>
<key>system.users.num</key>
<delay>5m</delay>
<history>60d</history>
<trends>1825d</trends>
<applications>
<application>
<name>System</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
@ -440,6 +651,7 @@
<item>
<name>Memory: $1</name>
<key>vm.memory.size[active]</key>
<history>60d</history>
<trends>1825d</trends>
<units>B</units>
<applications>
@ -452,6 +664,7 @@
<item>
<name>Memory: $1</name>
<key>vm.memory.size[buffers]</key>
<history>60d</history>
<trends>1825d</trends>
<units>B</units>
<applications>
@ -464,6 +677,7 @@
<item>
<name>Memory: $1</name>
<key>vm.memory.size[cached]</key>
<history>60d</history>
<trends>1825d</trends>
<units>B</units>
<applications>
@ -476,6 +690,7 @@
<item>
<name>Memory: $1</name>
<key>vm.memory.size[free]</key>
<history>60d</history>
<trends>1825d</trends>
<units>B</units>
<applications>
@ -488,6 +703,7 @@
<item>
<name>Memory: $1</name>
<key>vm.memory.size[inactive]</key>
<history>60d</history>
<trends>1825d</trends>
<units>B</units>
<applications>
@ -501,6 +717,7 @@
<name>Memory: $1</name>
<type>CALCULATED</type>
<key>vm.memory.size[pfree]</key>
<history>60d</history>
<trends>1825d</trends>
<units>%</units>
<params>100*last(&quot;vm.memory.size[free]&quot;)/last(&quot;vm.memory.size[total]&quot;)</params>
@ -515,6 +732,7 @@
<name>Memory: $1</name>
<type>CALCULATED</type>
<key>vm.memory.size[pused]</key>
<history>60d</history>
<trends>1825d</trends>
<units>%</units>
<params>100*last(&quot;vm.memory.size[used]&quot;)/last(&quot;vm.memory.size[total]&quot;)</params>
@ -523,6 +741,7 @@
<item>
<name>Memory: $1</name>
<key>vm.memory.size[shared]</key>
<history>60d</history>
<trends>1825d</trends>
<units>B</units>
<applications>
@ -536,6 +755,7 @@
<name>Memory: $1</name>
<key>vm.memory.size[total]</key>
<delay>1h</delay>
<history>60d</history>
<trends>1825d</trends>
<units>B</units>
<applications>
@ -548,6 +768,7 @@
<item>
<name>Memory: $1</name>
<key>vm.memory.size[used]</key>
<history>60d</history>
<trends>1825d</trends>
<units>B</units>
<applications>
@ -560,6 +781,7 @@
<item>
<name>Memory: $1</name>
<key>vm.memory.size[wired]</key>
<history>60d</history>
<trends>1825d</trends>
<units>B</units>
<applications>
@ -571,9 +793,117 @@
</item>
</items>
<discovery_rules>
<discovery_rule>
<name>Gateway discovery</name>
<key>pfsense.discovery[gw]</key>
<delay>1h</delay>
<lifetime>1d</lifetime>
<item_prototypes>
<item_prototype>
<name>Gateway $2 RTT</name>
<key>pfsense.value[gw_value,{#GATEWAY},delay]</key>
<delay>3m</delay>
<history>30d</history>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>s</units>
<applications>
<application>
<name>Network</name>
</application>
</applications>
<preprocessing>
<step>
<type>RTRIM</type>
<params>ms</params>
</step>
<step>
<type>MULTIPLIER</type>
<params>0.001</params>
</step>
</preprocessing>
</item_prototype>
<item_prototype>
<name>Gateway $2 Packet Loss</name>
<key>pfsense.value[gw_value,{#GATEWAY},loss]</key>
<delay>3m</delay>
<history>60d</history>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
<application>
<name>Network</name>
</application>
</applications>
<preprocessing>
<step>
<type>RTRIM</type>
<params>%</params>
</step>
</preprocessing>
</item_prototype>
<item_prototype>
<name>Gateway $2 Status</name>
<key>pfsense.value[gw_value,{#GATEWAY},status]</key>
<delay>3m</delay>
<history>30d</history>
<trends>1825d</trends>
<applications>
<application>
<name>Network</name>
</application>
</applications>
<trigger_prototypes>
<trigger_prototype>
<expression>{$PFS_MONITOR_GW}=1 and {last()}=5 and {last(#2)}=5</expression>
<name>Gateway {#GATEWAY} is down</name>
<priority>HIGH</priority>
<manual_close>YES</manual_close>
</trigger_prototype>
<trigger_prototype>
<expression>{$PFS_MONITOR_GW}=1 and {last()}=2 and {last(#2)}=2</expression>
<name>High Delay on gateway {#GATEWAY}</name>
<priority>WARNING</priority>
<manual_close>YES</manual_close>
</trigger_prototype>
<trigger_prototype>
<expression>{$PFS_MONITOR_GW}=1 and {last()}=3 and {last(#2)}=3</expression>
<name>High packet loss on {#GATEWAY}</name>
<priority>WARNING</priority>
<manual_close>YES</manual_close>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
<item_prototype>
<name>Gateway $2 RTT Std Deviation</name>
<key>pfsense.value[gw_value,{#GATEWAY},stddev]</key>
<delay>3m</delay>
<history>30d</history>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>s</units>
<applications>
<application>
<name>Network</name>
</application>
</applications>
<preprocessing>
<step>
<type>RTRIM</type>
<params>ms</params>
</step>
<step>
<type>MULTIPLIER</type>
<params>0.001</params>
</step>
</preprocessing>
</item_prototype>
</item_prototypes>
</discovery_rule>
<discovery_rule>
<name>Network interface discovery</name>
<key>net.if.discovery</key>
<key>pfsense.discovery[interfaces]</key>
<delay>1h</delay>
<filter>
<conditions>
@ -587,7 +917,7 @@
<lifetime>10d</lifetime>
<item_prototypes>
<item_prototype>
<name>Inbound trafic on {#IFNAME}</name>
<name>Inbound trafic on {#IFDESCR} ({#IFNAME})</name>
<key>net.if.in[{#IFNAME},bytes]</key>
<delay>45s</delay>
<trends>1825d</trends>
@ -611,7 +941,7 @@
<request_method>POST</request_method>
</item_prototype>
<item_prototype>
<name>Errors on inbound trafic for {#IFNAME}</name>
<name>Errors on inbound trafic for {#IFDESCR} ({#IFNAME})</name>
<key>net.if.in[{#IFNAME},errors]</key>
<delay>15m</delay>
<trends>1825d</trends>
@ -631,7 +961,7 @@
<request_method>POST</request_method>
</item_prototype>
<item_prototype>
<name>Outbound trafic on {#IFNAME}</name>
<name>Outbound trafic on {#IFDESCR} ({#IFNAME})</name>
<key>net.if.out[{#IFNAME},bytes]</key>
<delay>45s</delay>
<trends>1825d</trends>
@ -655,7 +985,7 @@
<request_method>POST</request_method>
</item_prototype>
<item_prototype>
<name>Errors on outbound trafic for {#IFNAME}</name>
<name>Errors on outbound trafic for {#IFDESCR} ({#IFNAME})</name>
<key>net.if.out[{#IFNAME},errors]</key>
<delay>15m</delay>
<trends>1825d</trends>
@ -677,9 +1007,10 @@
</item_prototypes>
<graph_prototypes>
<graph_prototype>
<name>Network: trafic: {#IFNAME}</name>
<name>Network: trafic: {#IFDESCR} ({#IFNAME})</name>
<graph_items>
<graph_item>
<sortorder>1</sortorder>
<drawtype>FILLED_REGION</drawtype>
<color>009900</color>
<item>
@ -688,7 +1019,7 @@
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<sortorder>2</sortorder>
<drawtype>FILLED_REGION</drawtype>
<color>FF6666</color>
<item>
@ -697,7 +1028,7 @@
</item>
</graph_item>
<graph_item>
<sortorder>2</sortorder>
<sortorder>3</sortorder>
<drawtype>BOLD_LINE</drawtype>
<color>EE00EE</color>
<yaxisside>RIGHT</yaxisside>
@ -707,7 +1038,7 @@
</item>
</graph_item>
<graph_item>
<sortorder>3</sortorder>
<sortorder>4</sortorder>
<drawtype>BOLD_LINE</drawtype>
<color>EE00EE</color>
<yaxisside>RIGHT</yaxisside>
@ -721,6 +1052,172 @@
</graph_prototypes>
<request_method>POST</request_method>
</discovery_rule>
<discovery_rule>
<name>IPsec Phase 1 Discovery</name>
<key>pfsense.discovery[ipsec_ph1]</key>
<delay>2h</delay>
<item_prototypes>
<item_prototype>
<name>IPsec Tunnel {#IKEID} {#NAME} Tunnel Disabled</name>
<key>pfsense.value[ipsec_ph1,{#IKEID},disabled]</key>
<delay>1h</delay>
<history>60d</history>
<trends>1825d</trends>
<applications>
<application>
<name>Network</name>
</application>
</applications>
</item_prototype>
<item_prototype>
<name>IPsec Tunnel {#IKEID} {#NAME} Phase 1 Status</name>
<key>pfsense.value[ipsec_ph1,{#IKEID},status]</key>
<delay>3m</delay>
<history>30d</history>
<trends>1825d</trends>
<applications>
<application>
<name>Network</name>
</application>
</applications>
</item_prototype>
</item_prototypes>
<trigger_prototypes>
<trigger_prototype>
<expression>{Template_OS_PfSense2:pfsense.value[ipsec_ph1,{#IKEID},disabled].last()}&lt;&gt;1 and {Template_OS_PfSense2:pfsense.value[ipsec_ph1,{#IKEID},status].last()}&lt;&gt;1 and {Template_OS_PfSense2:pfsense.value[ipsec_ph1,{#IKEID},status].last(#2)}&lt;&gt;1</expression>
<name>IPsec Tunnel {#IKEID} ({#NAME}) Not Connected</name>
<priority>WARNING</priority>
<manual_close>YES</manual_close>
</trigger_prototype>
</trigger_prototypes>
</discovery_rule>
<discovery_rule>
<name>OpenVPN Client Discovery</name>
<key>pfsense.discovery[openvpn_client]</key>
<delay>1h</delay>
<item_prototypes>
<item_prototype>
<name>OpenVPN Client {#NAME} Tunnel Status</name>
<key>pfsense.value[openvpn_clientvalue,{#CLIENT},status]</key>
<delay>3m</delay>
<history>30d</history>
<trends>1825d</trends>
<applications>
<application>
<name>Network</name>
</application>
</applications>
<trigger_prototypes>
<trigger_prototype>
<expression>{last()}=0 and {last(#2)}=0</expression>
<name>OpenVPN Client {#NAME} Tunnel is Down</name>
<priority>WARNING</priority>
<manual_close>YES</manual_close>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
</item_prototypes>
</discovery_rule>
<discovery_rule>
<name>OpenVPN Server Discovery</name>
<key>pfsense.discovery[openvpn_server]</key>
<delay>1h</delay>
<item_prototypes>
<item_prototype>
<name>OpenVPN Server {#NAME} Clients Connected</name>
<key>pfsense.value[openvpn_servervalue,{#SERVER},conns]</key>
<delay>3m</delay>
<history>60d</history>
<trends>1825d</trends>
<applications>
<application>
<name>Network</name>
</application>
</applications>
</item_prototype>
<item_prototype>
<name>OpenVPN Server {#NAME} Tunnel Status</name>
<key>pfsense.value[openvpn_servervalue,{#SERVER},status]</key>
<delay>3m</delay>
<history>30d</history>
<trends>1825d</trends>
<applications>
<application>
<name>Network</name>
</application>
</applications>
<trigger_prototypes>
<trigger_prototype>
<expression>{last()}=0 and {last(#2)}=0</expression>
<name>OpenVPN Server {#NAME} is Down</name>
<priority>WARNING</priority>
<manual_close>YES</manual_close>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
</item_prototypes>
<graph_prototypes>
<graph_prototype>
<name>Network: OpenVPN {#NAME} connections</name>
<graph_items>
<graph_item>
<sortorder>1</sortorder>
<drawtype>GRADIENT_LINE</drawtype>
<color>FFD54F</color>
<item>
<host>Template_OS_PfSense2</host>
<key>pfsense.value[openvpn_servervalue,{#SERVER},conns]</key>
</item>
</graph_item>
</graph_items>
</graph_prototype>
</graph_prototypes>
</discovery_rule>
<discovery_rule>
<name>Services Discovery</name>
<key>pfsense.discovery[services]</key>
<delay>1h</delay>
<filter>
<conditions>
<condition>
<macro>{#SERVICE}</macro>
<value>^openvpn</value>
<operator>NOT_MATCHES_REGEX</operator>
<formulaid>A</formulaid>
</condition>
<condition>
<macro>{#SERVICE}</macro>
<value>^iperf</value>
<operator>NOT_MATCHES_REGEX</operator>
<formulaid>B</formulaid>
</condition>
</conditions>
</filter>
<item_prototypes>
<item_prototype>
<name>Service {#DESCRIPTION} Status</name>
<key>pfsense.value[service_value,{#SERVICE},status]</key>
<delay>5m</delay>
<history>30d</history>
<trends>0</trends>
<applications>
<application>
<name>Processus</name>
</application>
<application>
<name>System</name>
</application>
</applications>
<trigger_prototypes>
<trigger_prototype>
<expression>{last()}=0</expression>
<name>Service {#DESCRIPTION} is not running</name>
<priority>AVERAGE</priority>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
</item_prototypes>
</discovery_rule>
<discovery_rule>
<name>Filesystem discovery</name>
<key>vfs.fs.discovery</key>
@ -832,6 +1329,10 @@
<macro>{$MAX_USERS}</macro>
<value>5</value>
</macro>
<macro>
<macro>{$PFS_MONITOR_GW}</macro>
<value>1</value>
</macro>
<macro>
<macro>{$REBOOT_WARN_DAY}</macro>
<value>7200</value>
@ -847,18 +1348,31 @@
</macros>
</template>
</templates>
<triggers>
<trigger>
<expression>{Template_OS_PfSense2:openfiles.num.last(0)}&gt;({Template_OS_PfSense2:kernel.maxfiles.last(0)}-2000)</expression>
<name>Lots of opened files</name>
<priority>AVERAGE</priority>
</trigger>
</triggers>
<graphs>
<graph>
<name>Network: Connection states</name>
<ymax_type_1>ITEM</ymax_type_1>
<ymax_item_1>
<host>Template_OS_PfSense2</host>
<key>pfsense.states.max</key>
</ymax_item_1>
<graph_items>
<graph_item>
<sortorder>1</sortorder>
<drawtype>GRADIENT_LINE</drawtype>
<color>B39DDB</color>
<item>
<host>Template_OS_PfSense2</host>
<key>pfsense.states.current</key>
</item>
</graph_item>
</graph_items>
</graph>
<graph>
<name>System: CPU: Load</name>
<graph_items>
<graph_item>
<sortorder>1</sortorder>
<color>009900</color>
<item>
<host>Template_OS_PfSense2</host>
@ -866,7 +1380,7 @@
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<sortorder>2</sortorder>
<color>FF0000</color>
<item>
<host>Template_OS_PfSense2</host>
@ -874,13 +1388,22 @@
</item>
</graph_item>
<graph_item>
<sortorder>2</sortorder>
<sortorder>3</sortorder>
<color>CCCC00</color>
<item>
<host>Template_OS_PfSense2</host>
<key>system.cpu.load[,avg5]</key>
</item>
</graph_item>
<graph_item>
<sortorder>4</sortorder>
<color>0040FF</color>
<yaxisside>RIGHT</yaxisside>
<item>
<host>Template_OS_PfSense2</host>
<key>system.cpu.switches</key>
</item>
</graph_item>
</graph_items>
</graph>
<graph>
@ -926,6 +1449,33 @@
</graph_item>
</graph_items>
</graph>
<graph>
<name>System: Mbuf usage</name>
<type>STACKED</type>
<ymax_type_1>ITEM</ymax_type_1>
<ymax_item_1>
<host>Template_OS_PfSense2</host>
<key>pfsense.mbuf.max</key>
</ymax_item_1>
<graph_items>
<graph_item>
<sortorder>1</sortorder>
<color>81C784</color>
<item>
<host>Template_OS_PfSense2</host>
<key>pfsense.mbuf.current</key>
</item>
</graph_item>
<graph_item>
<sortorder>2</sortorder>
<color>7986CB</color>
<item>
<host>Template_OS_PfSense2</host>
<key>pfsense.mbuf.cache</key>
</item>
</graph_item>
</graph_items>
</graph>
<graph>
<name>System: Memory</name>
<show_work_period>NO</show_work_period>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>4.4</version>
<date>2020-06-08T07:30:56Z</date>
<version>5.0</version>
<date>2021-06-19T12:17:39Z</date>
<groups>
<group>
<name>Templates</name>
@ -67,7 +67,7 @@
</item>
<item>
<name>CPU Usage: Userspace</name>
<key>perf_counter[&quot;\238(_Total)\142&quot;,30]</key>
<key>perf_counter[&quot;\238(_Total)\142&quot;,45]</key>
<delay>45s</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
@ -80,7 +80,7 @@
</item>
<item>
<name>CPU Usage: System</name>
<key>perf_counter[&quot;\238(_Total)\144&quot;,30]</key>
<key>perf_counter[&quot;\238(_Total)\144&quot;,45]</key>
<delay>45s</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
@ -693,7 +693,7 @@
<color>FF0000</color>
<item>
<host>Template_OS_Windows_Minimal</host>
<key>perf_counter[&quot;\238(_Total)\144&quot;,30]</key>
<key>perf_counter[&quot;\238(_Total)\144&quot;,45]</key>
</item>
</graph_item>
<graph_item>
@ -701,7 +701,7 @@
<color>FFFF00</color>
<item>
<host>Template_OS_Windows_Minimal</host>
<key>perf_counter[&quot;\238(_Total)\142&quot;,30]</key>
<key>perf_counter[&quot;\238(_Total)\142&quot;,45]</key>
</item>
</graph_item>
</graph_items>

View File

@ -0,0 +1,339 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-06-19T12:17:53Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template_OS_Windows_Serveur</template>
<name>Template_OS_Windows_Serveur</name>
<templates>
<template>
<name>Template_OS_Windows_Minimal</name>
</template>
<template>
<name>Template_Ping</name>
</template>
</templates>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<discovery_rules>
<discovery_rule>
<name>Megaraid discovery: adapters</name>
<key>raid.megaraid.discovery[adapter]</key>
<delay>12h</delay>
<item_prototypes>
<item_prototype>
<name>MegaRAID : Adapter {#MEGARAID_ADP} : Firmware version</name>
<key>raid.megaraid.adapter[{#MEGARAID_ADP},fw_version]</key>
<delay>2h</delay>
<history>30d</history>
<trends>0</trends>
<value_type>CHAR</value_type>
<applications>
<application>
<name>Disks</name>
</application>
</applications>
<trigger_prototypes>
<trigger_prototype>
<expression>{diff()}=1</expression>
<recovery_mode>NONE</recovery_mode>
<name>Firmware version changed on {#MEGARAID_ADP}</name>
<priority>WARNING</priority>
<manual_close>YES</manual_close>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
<item_prototype>
<name>MegaRAID : Adapter {#MEGARAID_ADP} : Model</name>
<key>raid.megaraid.adapter[{#MEGARAID_ADP},product_name]</key>
<delay>12h</delay>
<history>30d</history>
<trends>0</trends>
<value_type>CHAR</value_type>
<applications>
<application>
<name>Disks</name>
</application>
</applications>
</item_prototype>
</item_prototypes>
</discovery_rule>
<discovery_rule>
<name>Megaraid discovery : bbu</name>
<key>raid.megaraid.discovery[bbu]</key>
<delay>12h</delay>
<item_prototypes>
<item_prototype>
<name>MegaRAID : BBU of adapter {#ADAPTER_ID} : State</name>
<key>raid.megaraid.bbu[{#ADAPTER_ID},bbu_state]</key>
<delay>30m</delay>
<history>30d</history>
<applications>
<application>
<name>Disks</name>
</application>
</applications>
<trigger_prototypes>
<trigger_prototype>
<expression>{last()}&lt;&gt;0</expression>
<name>BBU on adapter {#ADAPTER_ID} must be checked</name>
<priority>AVERAGE</priority>
</trigger_prototype>
<trigger_prototype>
<expression>{nodata(2h)}=1</expression>
<name>BBU on adapter {#ADAPTER_ID} not checked recently</name>
<priority>WARNING</priority>
<dependencies>
<dependency>
<name>No ping information received in last 3 minutes</name>
<expression>{Template_OS_Windows_Serveur:icmpping[,2,,,2000].nodata(180,strict)}=1</expression>
</dependency>
<dependency>
<name>No ping response from {HOST.IP1}</name>
<expression>{Template_OS_Windows_Serveur:icmpping[,2,,,2000].nodata(180,strict)}=0 and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].sum({$DOWN_CRITICAL})}=0 and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].dayofweek(0)}&gt;={$PING_ALERT_FROM_DAY} and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].dayofweek(0)}&lt;={$PING_ALERT_TO_DAY} and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].time(0)}&gt;={$PING_ALERT_FROM_HOUR} and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].time(0)}&lt;={$PING_ALERT_TO_HOUR}</expression>
<recovery_expression>{Template_OS_Windows_Serveur:icmpping[,2,,,2000].sum(180)}&gt;3</recovery_expression>
</dependency>
<dependency>
<name>Zabbix agent unavailable</name>
<expression>{Template_OS_Windows_Serveur:agent.ping.nodata({$ZBX_UNREACHABLE_TIMEOUT})}=1</expression>
</dependency>
</dependencies>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
<item_prototype>
<name>MegaRAID : BBU of adapter {#ADAPTER_ID} : Design capacity</name>
<key>raid.megaraid.bbu[{#ADAPTER_ID},design_capacity]</key>
<delay>30m</delay>
<history>30d</history>
<units>mAh</units>
<applications>
<application>
<name>Disks</name>
</application>
</applications>
</item_prototype>
<item_prototype>
<name>MegaRAID : BBU of adapter {#ADAPTER_ID} : Full capacity</name>
<key>raid.megaraid.bbu[{#ADAPTER_ID},full_capacity]</key>
<delay>30m</delay>
<history>30d</history>
<units>mAh</units>
<applications>
<application>
<name>Disks</name>
</application>
</applications>
</item_prototype>
</item_prototypes>
<trigger_prototypes>
<trigger_prototype>
<expression>{Template_OS_Windows_Serveur:raid.megaraid.bbu[{#ADAPTER_ID},full_capacity].last()}&lt;({Template_OS_Windows_Serveur:raid.megaraid.bbu[{#ADAPTER_ID},design_capacity].last()}/2)</expression>
<name>BBU on adapter {#ADAPTER_ID} capacity is less than 50%</name>
<priority>AVERAGE</priority>
</trigger_prototype>
</trigger_prototypes>
</discovery_rule>
<discovery_rule>
<name>Megaraid discovery: pdisks</name>
<key>raid.megaraid.discovery[pdisk]</key>
<delay>3h</delay>
<item_prototypes>
<item_prototype>
<name>MegaRAID : Disk [{#ENCLOSURE_ID}:{#PDRIVE_ID}] on adapter {#ADAPTER_ID} : State</name>
<key>raid.megaraid.pdisk[{#ADAPTER_ID},{#ENCLOSURE_ID},{#PDRIVE_ID},firmware_state]</key>
<delay>15m</delay>
<history>30d</history>
<applications>
<application>
<name>Disks</name>
</application>
</applications>
<trigger_prototypes>
<trigger_prototype>
<expression>{last()}&lt;&gt;0</expression>
<name>Drive [{#ENCLOSURE_ID},{#PDRIVE_ID}] on adapter {#ADAPTER_ID} has an issue</name>
<priority>AVERAGE</priority>
<dependencies>
<dependency>
<name>Drive [{#ENCLOSURE_ID},{#PDRIVE_ID}] on adapter {#ADAPTER_ID} is rebuilding</name>
<expression>{Template_OS_Windows_Serveur:raid.megaraid.pdisk[{#ADAPTER_ID},{#ENCLOSURE_ID},{#PDRIVE_ID},firmware_state].last()}=2</expression>
</dependency>
</dependencies>
</trigger_prototype>
<trigger_prototype>
<expression>{last()}=2</expression>
<name>Drive [{#ENCLOSURE_ID},{#PDRIVE_ID}] on adapter {#ADAPTER_ID} is rebuilding</name>
<priority>WARNING</priority>
</trigger_prototype>
<trigger_prototype>
<expression>{nodata(2h)}=1</expression>
<name>Drive [{#ENCLOSURE_ID},{#PDRIVE_ID}] on adapter {#ADAPTER_ID} not checked recently</name>
<priority>WARNING</priority>
<dependencies>
<dependency>
<name>No ping information received in last 3 minutes</name>
<expression>{Template_OS_Windows_Serveur:icmpping[,2,,,2000].nodata(180,strict)}=1</expression>
</dependency>
<dependency>
<name>No ping response from {HOST.IP1}</name>
<expression>{Template_OS_Windows_Serveur:icmpping[,2,,,2000].nodata(180,strict)}=0 and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].sum({$DOWN_CRITICAL})}=0 and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].dayofweek(0)}&gt;={$PING_ALERT_FROM_DAY} and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].dayofweek(0)}&lt;={$PING_ALERT_TO_DAY} and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].time(0)}&gt;={$PING_ALERT_FROM_HOUR} and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].time(0)}&lt;={$PING_ALERT_TO_HOUR}</expression>
<recovery_expression>{Template_OS_Windows_Serveur:icmpping[,2,,,2000].sum(180)}&gt;3</recovery_expression>
</dependency>
<dependency>
<name>Zabbix agent unavailable</name>
<expression>{Template_OS_Windows_Serveur:agent.ping.nodata({$ZBX_UNREACHABLE_TIMEOUT})}=1</expression>
</dependency>
</dependencies>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
<item_prototype>
<name>MegaRAID : Disk [{#ENCLOSURE_ID}:{#PDRIVE_ID}] on adapter {#ADAPTER_ID} : Media Errors</name>
<key>raid.megaraid.pdisk[{#ADAPTER_ID},{#ENCLOSURE_ID},{#PDRIVE_ID},media_errors]</key>
<delay>15m</delay>
<history>30d</history>
<units>!errors</units>
<applications>
<application>
<name>Disks</name>
</application>
</applications>
<trigger_prototypes>
<trigger_prototype>
<expression>{diff()}=1</expression>
<recovery_mode>NONE</recovery_mode>
<name>Drive [{#ENCLOSURE_ID},{#PDRIVE_ID}] on adapter {#ADAPTER_ID} has {ITEM.LASTVALUE1} (media)</name>
<priority>WARNING</priority>
<manual_close>YES</manual_close>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
<item_prototype>
<name>MegaRAID : Disk [{#ENCLOSURE_ID}:{#PDRIVE_ID}] on adapter {#ADAPTER_ID} : Predictive errors</name>
<key>raid.megaraid.pdisk[{#ADAPTER_ID},{#ENCLOSURE_ID},{#PDRIVE_ID},predictive_errors]</key>
<delay>15m</delay>
<history>30d</history>
<units>!errors</units>
<applications>
<application>
<name>Disks</name>
</application>
</applications>
<trigger_prototypes>
<trigger_prototype>
<expression>{diff()}=1</expression>
<recovery_mode>NONE</recovery_mode>
<name>Drive [{#ENCLOSURE_ID},{#PDRIVE_ID}] on adapter {#ADAPTER_ID} has {ITEM.LASTVALUE1} (predictive)</name>
<priority>WARNING</priority>
<manual_close>YES</manual_close>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
</item_prototypes>
</discovery_rule>
<discovery_rule>
<name>Megaraid discovery: vdisks</name>
<key>raid.megaraid.discovery[vdisk]</key>
<delay>12h</delay>
<item_prototypes>
<item_prototype>
<name>MegaRAID : vdisk {#VDRIVE_ID} on adapter {#ADAPTER_ID} : State</name>
<key>raid.megaraid.vdisk[{#ADAPTER_ID},{#VDRIVE_ID},vd_state]</key>
<delay>15m</delay>
<history>30d</history>
<applications>
<application>
<name>Disks</name>
</application>
</applications>
<trigger_prototypes>
<trigger_prototype>
<expression>{last()}&lt;&gt;0</expression>
<name>Virtual drive {#VDRIVE_ID} on adapter {#ADAPTER_ID} is not optimal</name>
<priority>HIGH</priority>
</trigger_prototype>
<trigger_prototype>
<expression>{nodata(2h)}=1</expression>
<name>Virtual drive {#VDRIVE_ID} on adapter {#ADAPTER_ID} not checked recently</name>
<priority>WARNING</priority>
<dependencies>
<dependency>
<name>No ping information received in last 3 minutes</name>
<expression>{Template_OS_Windows_Serveur:icmpping[,2,,,2000].nodata(180,strict)}=1</expression>
</dependency>
<dependency>
<name>No ping response from {HOST.IP1}</name>
<expression>{Template_OS_Windows_Serveur:icmpping[,2,,,2000].nodata(180,strict)}=0 and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].sum({$DOWN_CRITICAL})}=0 and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].dayofweek(0)}&gt;={$PING_ALERT_FROM_DAY} and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].dayofweek(0)}&lt;={$PING_ALERT_TO_DAY} and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].time(0)}&gt;={$PING_ALERT_FROM_HOUR} and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].time(0)}&lt;={$PING_ALERT_TO_HOUR}</expression>
<recovery_expression>{Template_OS_Windows_Serveur:icmpping[,2,,,2000].sum(180)}&gt;3</recovery_expression>
</dependency>
<dependency>
<name>Zabbix agent unavailable</name>
<expression>{Template_OS_Windows_Serveur:agent.ping.nodata({$ZBX_UNREACHABLE_TIMEOUT})}=1</expression>
</dependency>
</dependencies>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
</item_prototypes>
</discovery_rule>
</discovery_rules>
<macros>
<macro>
<macro>{$LOAD_COEF}</macro>
<value>1</value>
</macro>
<macro>
<macro>{$MAX_PROCESSES}</macro>
<value>200</value>
</macro>
<macro>
<macro>{$REBOOT_WARN}</macro>
<value>21600</value>
</macro>
<macro>
<macro>{$ZBX_UNREACHABLE_TIMEOUT}</macro>
<value>900</value>
</macro>
</macros>
</template>
</templates>
<triggers>
<trigger>
<expression>({Template_OS_Windows_Serveur:system.cpu.load[,avg1].avg(900)}&gt;({Template_OS_Windows_Serveur:system.cpu.num[].last(0)}*3*{$LOAD_COEF})) or ({Template_OS_Windows_Serveur:system.cpu.load[,avg1].avg(1800)}&gt;({Template_OS_Windows_Serveur:system.cpu.num[].last(0)}*2.5*{$LOAD_COEF})) or ({Template_OS_Windows_Serveur:system.cpu.load[,avg1].avg(7200)}&gt;({Template_OS_Windows_Serveur:system.cpu.num[].last(0)}*1.2*{$LOAD_COEF}))</expression>
<name>High CPU load</name>
<priority>INFO</priority>
</trigger>
<trigger>
<expression>{Template_OS_Windows_Serveur:proc.num[].last(0)}&gt;{$MAX_PROCESSES}</expression>
<name>Too many processes</name>
<priority>AVERAGE</priority>
</trigger>
<trigger>
<expression>{Template_OS_Windows_Serveur:agent.ping.nodata({$ZBX_UNREACHABLE_TIMEOUT})}=1</expression>
<name>Zabbix agent unavailable</name>
<priority>DISASTER</priority>
<dependencies>
<dependency>
<name>No ping response from {HOST.IP1}</name>
<expression>{Template_OS_Windows_Serveur:icmpping[,2,,,2000].nodata(180,strict)}=0 and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].sum({$DOWN_CRITICAL})}=0 and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].dayofweek(0)}&gt;={$PING_ALERT_FROM_DAY} and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].dayofweek(0)}&lt;={$PING_ALERT_TO_DAY} and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].time(0)}&gt;={$PING_ALERT_FROM_HOUR} and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].time(0)}&lt;={$PING_ALERT_TO_HOUR}</expression>
<recovery_expression>{Template_OS_Windows_Serveur:icmpping[,2,,,2000].sum(180)}&gt;3</recovery_expression>
</dependency>
</dependencies>
</trigger>
<trigger>
<expression>{Template_OS_Windows_Serveur:system.uptime.last(0)}&lt;{$REBOOT_WARN}</expression>
<name>{HOSTNAME} rebooted {ITEM.LASTVALUE1} ago</name>
<priority>INFO</priority>
</trigger>
</triggers>
</zabbix_export>

View File

@ -1,76 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>4.4</version>
<date>2020-06-08T07:31:25Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template_OS_Windows_Serveur</template>
<name>Template_OS_Windows_Serveur</name>
<templates>
<template>
<name>Template_OS_Windows_Minimal</name>
</template>
<template>
<name>Template_Ping</name>
</template>
</templates>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<macros>
<macro>
<macro>{$LOAD_COEF}</macro>
<value>1</value>
</macro>
<macro>
<macro>{$MAX_PROCESSES}</macro>
<value>200</value>
</macro>
<macro>
<macro>{$REBOOT_WARN}</macro>
<value>21600</value>
</macro>
<macro>
<macro>{$ZBX_UNREACHABLE_TIMEOUT}</macro>
<value>900</value>
</macro>
</macros>
</template>
</templates>
<triggers>
<trigger>
<expression>({Template_OS_Windows_Serveur:system.cpu.load[,avg1].avg(900)}&gt;({Template_OS_Windows_Serveur:system.cpu.num[].last(0)}*3*{$LOAD_COEF})) or ({Template_OS_Windows_Serveur:system.cpu.load[,avg1].avg(1800)}&gt;({Template_OS_Windows_Serveur:system.cpu.num[].last(0)}*2.5*{$LOAD_COEF})) or ({Template_OS_Windows_Serveur:system.cpu.load[,avg1].avg(7200)}&gt;({Template_OS_Windows_Serveur:system.cpu.num[].last(0)}*1.2*{$LOAD_COEF}))</expression>
<name>High CPU load</name>
<priority>INFO</priority>
</trigger>
<trigger>
<expression>{Template_OS_Windows_Serveur:proc.num[].last(0)}&gt;{$MAX_PROCESSES}</expression>
<name>Too many processes</name>
<priority>AVERAGE</priority>
</trigger>
<trigger>
<expression>{Template_OS_Windows_Serveur:agent.ping.nodata({$ZBX_UNREACHABLE_TIMEOUT})}=1</expression>
<name>Zabbix agent unavailable</name>
<priority>DISASTER</priority>
<dependencies>
<dependency>
<name>No ping response from {HOST.IP1}</name>
<expression>{Template_OS_Windows_Serveur:icmpping[,2,,,2000].sum({$DOWN_CRITICAL})}=0 and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].dayofweek(0)}&gt;={$PING_ALERT_FROM_DAY} and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].dayofweek(0)}&lt;={$PING_ALERT_TO_DAY} and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].time(0)}&gt;={$PING_ALERT_FROM_HOUR} and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].time(0)}&lt;={$PING_ALERT_TO_HOUR}</expression>
<recovery_expression>{Template_OS_Windows_Serveur:icmpping[,2,,,2000].sum(180)}&gt;3</recovery_expression>
</dependency>
</dependencies>
</trigger>
<trigger>
<expression>{Template_OS_Windows_Serveur:system.uptime.last(0)}&lt;{$REBOOT_WARN}</expression>
<name>{HOSTNAME} rebooted {ITEM.LASTVALUE1} ago</name>
<priority>INFO</priority>
</trigger>
</triggers>
</zabbix_export>

View File

@ -0,0 +1,980 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-06-19T12:18:52Z</date>
<groups>
<group>
<name>Modèles</name>
</group>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template_OS_iPasserelle</template>
<name>Template_OS_iPasserelle</name>
<templates>
<template>
<name>Template_App_MySQL_legacy</name>
</template>
<template>
<name>Template_App_Qmail</name>
</template>
<template>
<name>Template_App_Samba</name>
</template>
<template>
<name>Template_App_SOGo</name>
</template>
<template>
<name>Template_App_Squid_legacy</name>
</template>
<template>
<name>Template_App_SSLExpire</name>
</template>
<template>
<name>Template_OS_Linux_Server</name>
</template>
<template>
<name>Template_PublicService_HTTP</name>
</template>
<template>
<name>Template_PublicService_HTTPS</name>
</template>
</templates>
<groups>
<group>
<name>Modèles</name>
</group>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>Availability</name>
</application>
<application>
<name>CPU</name>
</application>
<application>
<name>Emails</name>
</application>
<application>
<name>Filesystem</name>
</application>
<application>
<name>General</name>
</application>
<application>
<name>Log files</name>
</application>
<application>
<name>Memory</name>
</application>
<application>
<name>OS</name>
</application>
<application>
<name>Performance</name>
</application>
<application>
<name>Processes</name>
</application>
<application>
<name>Réseau</name>
</application>
<application>
<name>Security</name>
</application>
<application>
<name>Services</name>
</application>
</applications>
<items>
<item>
<name>Adresse IP publique</name>
<key>ip.external</key>
<delay>1h</delay>
<trends>0</trends>
<status>DISABLED</status>
<value_type>CHAR</value_type>
<applications>
<application>
<name>Network</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Données bayes</name>
<key>mail.bayes.all</key>
<delay>30m</delay>
<history>3600</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<request_method>POST</request_method>
</item>
<item>
<name>Nombre de ham soumis (bayes)</name>
<type>DEPENDENT</type>
<key>mail.bayes.ham</key>
<delay>0</delay>
<trends>1825d</trends>
<units>mail</units>
<applications>
<application>
<name>Emails</name>
</application>
</applications>
<preprocessing>
<step>
<type>JSONPATH</type>
<params>$.ham</params>
</step>
</preprocessing>
<master_item>
<key>mail.bayes.all</key>
</master_item>
<request_method>POST</request_method>
</item>
<item>
<name>Nombre de spam soumis (bayes)</name>
<type>DEPENDENT</type>
<key>mail.bayes.spam</key>
<delay>0</delay>
<trends>1825d</trends>
<units>mail</units>
<applications>
<application>
<name>Emails</name>
</application>
</applications>
<preprocessing>
<step>
<type>JSONPATH</type>
<params>$.spam</params>
</step>
</preprocessing>
<master_item>
<key>mail.bayes.all</key>
</master_item>
<request_method>POST</request_method>
</item>
<item>
<name>Nombre de tokens (bayes)</name>
<type>DEPENDENT</type>
<key>mail.bayes.token</key>
<delay>0</delay>
<trends>1825d</trends>
<units>token</units>
<applications>
<application>
<name>Emails</name>
</application>
</applications>
<preprocessing>
<step>
<type>JSONPATH</type>
<params>$.token</params>
</step>
</preprocessing>
<master_item>
<key>mail.bayes.all</key>
</master_item>
<request_method>POST</request_method>
</item>
<item>
<name>Mails entrants rejetés ($1)</name>
<key>mail.in[check_basicheaders]</key>
<delay>10m</delay>
<trends>1825d</trends>
<units>mails/h</units>
<applications>
<application>
<name>Emails</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>6</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
<item>
<name>Mails entrants rejetés ($1)</name>
<key>mail.in[check_earlytalker]</key>
<delay>10m</delay>
<trends>1825d</trends>
<units>mails/h</units>
<applications>
<application>
<name>Emails</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>6</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
<item>
<name>Mails entrants rejetés ($1)</name>
<key>mail.in[check_goodrcptto]</key>
<delay>10m</delay>
<trends>1825d</trends>
<units>mails/h</units>
<applications>
<application>
<name>Emails</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>6</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
<item>
<name>Mails entrants rejetés ($1)</name>
<key>mail.in[check_spamhelo]</key>
<delay>10m</delay>
<trends>1825d</trends>
<units>mails/h</units>
<applications>
<application>
<name>Emails</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>6</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
<item>
<name>Mails entrants rejetés ($1)</name>
<key>mail.in[clamav]</key>
<delay>10m</delay>
<trends>1825d</trends>
<units>mails/h</units>
<applications>
<application>
<name>Emails</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>6</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
<item>
<name>Mails entrants rejetés ($1)</name>
<key>mail.in[dnsbl]</key>
<delay>10m</delay>
<trends>1825d</trends>
<units>mails/h</units>
<applications>
<application>
<name>Emails</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>6</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
<item>
<name>Mails entrants rejetés ($1)</name>
<key>mail.in[karma]</key>
<delay>10m</delay>
<trends>1825d</trends>
<units>mails/h</units>
<applications>
<application>
<name>Emails</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>6</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
<item>
<name>Mails entrants rejetés ($1)</name>
<key>mail.in[other_denied]</key>
<delay>10m</delay>
<trends>1825d</trends>
<units>mails/h</units>
<applications>
<application>
<name>Emails</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>6</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
<item>
<name>Mails entrants acceptés ($1)</name>
<key>mail.in[queued]</key>
<delay>10m</delay>
<trends>1825d</trends>
<units>mails/h</units>
<applications>
<application>
<name>Emails</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>6</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
<item>
<name>Mails entrants rejetés ($1)</name>
<key>mail.in[resolvable_fromhost]</key>
<delay>10m</delay>
<trends>1825d</trends>
<units>mails/h</units>
<applications>
<application>
<name>Emails</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>6</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
<item>
<name>Mails entrants rejetés ($1)</name>
<key>mail.in[rhsbl]</key>
<delay>10m</delay>
<trends>1825d</trends>
<units>mails/h</units>
<applications>
<application>
<name>Emails</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>6</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
<item>
<name>Mails entrants rejetés ($1)</name>
<key>mail.in[spam_denied]</key>
<delay>10m</delay>
<trends>1825d</trends>
<units>mails/h</units>
<applications>
<application>
<name>Emails</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>6</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
<item>
<name>Mails entrants acceptés, classés en spam ($1)</name>
<key>mail.in[spam_queued]</key>
<delay>10m</delay>
<trends>1825d</trends>
<units>mails/h</units>
<applications>
<application>
<name>Emails</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>6</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
<item>
<name>Mails entrants rejetés ($1)</name>
<key>mail.in[spf]</key>
<delay>10m</delay>
<trends>1825d</trends>
<units>mails/h</units>
<applications>
<application>
<name>Emails</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>6</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
<item>
<name>Mails entrants rejetés ($1)</name>
<key>mail.in[tls_failed]</key>
<delay>10m</delay>
<trends>1825d</trends>
<units>mails/h</units>
<applications>
<application>
<name>Emails</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>6</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
<item>
<name>Mails entrants ($1)</name>
<key>mail.in[total]</key>
<delay>10m</delay>
<trends>1825d</trends>
<units>mails/h</units>
<applications>
<application>
<name>Emails</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>6</params>
</step>
</preprocessing>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{avg(7200)}&gt;{$TOO_MANY_MAIL_COEF}*{avg(604800)}</expression>
<name>Trop de mails entrants</name>
<priority>INFO</priority>
<description>Si la moyenne des mails reçus sur les deux dernières heures est supérieures à 10x la moyenne des mails reçus sur la dernière semaine, on trig</description>
</trigger>
</triggers>
</item>
<item>
<name>Mails entrants rejetés ($1)</name>
<key>mail.in[total_denied]</key>
<delay>10m</delay>
<trends>1825d</trends>
<units>mails/h</units>
<applications>
<application>
<name>Emails</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>6</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
<item>
<name>Mails entrants rejetés ($1)</name>
<key>mail.in[uribl]</key>
<delay>10m</delay>
<trends>1825d</trends>
<units>mails/h</units>
<applications>
<application>
<name>Emails</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>6</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
<item>
<name>Mails sortants ($1)</name>
<key>mail.out[deferral]</key>
<delay>10m</delay>
<trends>1825d</trends>
<units>mails/h</units>
<applications>
<application>
<name>Emails</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>6</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
<item>
<name>Mails sortants en erreur ($1)</name>
<key>mail.out[failure]</key>
<delay>10m</delay>
<trends>1825d</trends>
<units>mails/h</units>
<applications>
<application>
<name>Emails</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>6</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
<item>
<name>Mails sortants avec succès ($1)</name>
<key>mail.out[success]</key>
<delay>10m</delay>
<trends>1825d</trends>
<units>mails/h</units>
<applications>
<application>
<name>Emails</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>6</params>
</step>
</preprocessing>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{sum({$NO_OUTGOING_MAIL_WARN})}&lt;1</expression>
<name>Aucun mail sortant</name>
<priority>HIGH</priority>
</trigger>
</triggers>
</item>
<item>
<name>Mails sortants ($1)</name>
<key>mail.out[total]</key>
<delay>10m</delay>
<trends>1825d</trends>
<units>mails/h</units>
<applications>
<application>
<name>Emails</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>6</params>
</step>
</preprocessing>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{avg(7200)}&gt;{$TOO_MANY_MAIL_COEF}*{avg(604800)}</expression>
<name>Trop de mails sortants</name>
<priority>INFO</priority>
<description>Si la moyenne des mails envoyés sur les deux dernières heures est supérieures à 10x la moyenne des mails envoyés sur la dernière semaine, on trig</description>
</trigger>
</triggers>
</item>
<item>
<name>Requête DNS $2</name>
<key>net.dns.record[,2.0.0.127.multi.uribl.com,TXT,,,]</key>
<delay>15m</delay>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>Réseau</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{str(&quot;permanent testpoint&quot;)}=0</expression>
<name>Problème sur les requêtes uribl.com</name>
<priority>AVERAGE</priority>
</trigger>
</triggers>
</item>
<item>
<name>Requête DNS $2</name>
<key>net.dns.record[,test.multi.surbl.org.multi.surbl.org,TXT,,,]</key>
<delay>15m</delay>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>Réseau</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{regexp(&quot;(wild|multi)\.surbl\.org permanent test point&quot;)}=0</expression>
<name>Problème sur les requêtes surbl.org</name>
<priority>AVERAGE</priority>
</trigger>
</triggers>
</item>
<item>
<name>Number of running processes qmail-remote</name>
<key>proc.num[,,,qmail-remote]</key>
<trends>1825d</trends>
<applications>
<application>
<name>Processes</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Number of running processes qpsmtpd-forkserver</name>
<key>proc.num[,,,qpsmtpd-forkserver]</key>
<trends>1825d</trends>
<applications>
<application>
<name>Processes</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Activation du service $1</name>
<key>sme.service.status[nmbd]</key>
<delay>1h</delay>
<trends>1825d</trends>
<applications>
<application>
<name>Applications</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Activation du service $1</name>
<key>sme.service.status[smbd]</key>
<delay>1h</delay>
<trends>1825d</trends>
<applications>
<application>
<name>Applications</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Activation du service $1</name>
<key>sme.service.status[sogod]</key>
<delay>1h</delay>
<trends>1825d</trends>
<applications>
<application>
<name>Applications</name>
</application>
<application>
<name>Emails</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Number of updates available</name>
<snmp_oid>interfaces.ifTable.ifEntry.ifInOctets.1</snmp_oid>
<key>updates.available</key>
<delay>3h</delay>
<trends>1825d</trends>
<units>updates</units>
<params>DSN=&lt;database source name&gt;\nuser=&lt;user name&gt;\npassword=&lt;password&gt;\nsql=&lt;query&gt;</params>
<applications>
<application>
<name>Security</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
</items>
<macros>
<macro>
<macro>{$DNS_NAME_CHECK}</macro>
<value>zabbix.firewall-services.com.</value>
</macro>
<macro>
<macro>{$MAX_PROCESSES}</macro>
<value>480</value>
</macro>
<macro>
<macro>{$MAX_RUNNING_PROCESSES}</macro>
<value>15</value>
</macro>
<macro>
<macro>{$MAX_USERS}</macro>
<value>5</value>
</macro>
<macro>
<macro>{$NO_OUTGOING_MAIL_WARN}</macro>
<value>#5</value>
</macro>
<macro>
<macro>{$SSL_WARN_EXPIRE}</macro>
<value>28</value>
</macro>
<macro>
<macro>{$TOO_MANY_MAIL_COEF}</macro>
<value>10</value>
</macro>
</macros>
</template>
</templates>
<triggers>
<trigger>
<expression>{Template_OS_iPasserelle:mail.in[clamav].avg(7200)}&gt;{Template_OS_iPasserelle:mail.in[total].avg(7200)}/3</expression>
<name>Trop de mails contenant des virus</name>
<status>DISABLED</status>
<priority>WARNING</priority>
<description>Plus d'un tiers des mails entrants sont détectés comme virus</description>
</trigger>
</triggers>
<graphs>
<graph>
<name>Réseau: Email: Connexions concurentes</name>
<show_triggers>NO</show_triggers>
<graph_items>
<graph_item>
<drawtype>FILLED_REGION</drawtype>
<color>009900</color>
<item>
<host>Template_OS_iPasserelle</host>
<key>proc.num[,,,qpsmtpd-forkserver]</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<drawtype>FILLED_REGION</drawtype>
<color>FF6666</color>
<yaxisside>RIGHT</yaxisside>
<item>
<host>Template_OS_iPasserelle</host>
<key>proc.num[,,,qmail-remote]</key>
</item>
</graph_item>
</graph_items>
</graph>
<graph>
<name>Réseau: Email: Entrant</name>
<type>STACKED</type>
<graph_items>
<graph_item>
<drawtype>FILLED_REGION</drawtype>
<color>00CC00</color>
<item>
<host>Template_OS_iPasserelle</host>
<key>mail.in[queued]</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<drawtype>FILLED_REGION</drawtype>
<color>99FF99</color>
<item>
<host>Template_OS_iPasserelle</host>
<key>mail.in[spam_queued]</key>
</item>
</graph_item>
<graph_item>
<sortorder>2</sortorder>
<drawtype>FILLED_REGION</drawtype>
<color>990000</color>
<item>
<host>Template_OS_iPasserelle</host>
<key>mail.in[clamav]</key>
</item>
</graph_item>
<graph_item>
<sortorder>3</sortorder>
<drawtype>FILLED_REGION</drawtype>
<color>FF0000</color>
<item>
<host>Template_OS_iPasserelle</host>
<key>mail.in[spam_denied]</key>
</item>
</graph_item>
<graph_item>
<sortorder>4</sortorder>
<drawtype>FILLED_REGION</drawtype>
<color>0000CC</color>
<item>
<host>Template_OS_iPasserelle</host>
<key>mail.in[dnsbl]</key>
</item>
</graph_item>
<graph_item>
<sortorder>5</sortorder>
<drawtype>FILLED_REGION</drawtype>
<color>9999FF</color>
<item>
<host>Template_OS_iPasserelle</host>
<key>mail.in[rhsbl]</key>
</item>
</graph_item>
<graph_item>
<sortorder>6</sortorder>
<color>8048B4</color>
<item>
<host>Template_OS_iPasserelle</host>
<key>mail.in[uribl]</key>
</item>
</graph_item>
<graph_item>
<sortorder>7</sortorder>
<drawtype>FILLED_REGION</drawtype>
<color>99FFFF</color>
<item>
<host>Template_OS_iPasserelle</host>
<key>mail.in[check_goodrcptto]</key>
</item>
</graph_item>
<graph_item>
<sortorder>8</sortorder>
<drawtype>FILLED_REGION</drawtype>
<color>FF00FF</color>
<item>
<host>Template_OS_iPasserelle</host>
<key>mail.in[check_basicheaders]</key>
</item>
</graph_item>
<graph_item>
<sortorder>9</sortorder>
<drawtype>FILLED_REGION</drawtype>
<color>FFFF00</color>
<item>
<host>Template_OS_iPasserelle</host>
<key>mail.in[karma]</key>
</item>
</graph_item>
<graph_item>
<sortorder>10</sortorder>
<color>FFCCFF</color>
<item>
<host>Template_OS_iPasserelle</host>
<key>mail.in[resolvable_fromhost]</key>
</item>
</graph_item>
<graph_item>
<sortorder>11</sortorder>
<color>274482</color>
<item>
<host>Template_OS_iPasserelle</host>
<key>mail.in[spf]</key>
</item>
</graph_item>
<graph_item>
<sortorder>12</sortorder>
<color>2B5429</color>
<item>
<host>Template_OS_iPasserelle</host>
<key>mail.in[tls_failed]</key>
</item>
</graph_item>
<graph_item>
<sortorder>13</sortorder>
<drawtype>FILLED_REGION</drawtype>
<color>AAAAAA</color>
<item>
<host>Template_OS_iPasserelle</host>
<key>mail.in[other_denied]</key>
</item>
</graph_item>
<graph_item>
<sortorder>14</sortorder>
<color>00AAAA</color>
<item>
<host>Template_OS_iPasserelle</host>
<key>mail.in[check_spamhelo]</key>
</item>
</graph_item>
</graph_items>
</graph>
<graph>
<name>Réseau: Email: Sortant</name>
<type>STACKED</type>
<graph_items>
<graph_item>
<drawtype>FILLED_REGION</drawtype>
<color>009900</color>
<item>
<host>Template_OS_iPasserelle</host>
<key>mail.out[success]</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<drawtype>FILLED_REGION</drawtype>
<color>FFFF00</color>
<item>
<host>Template_OS_iPasserelle</host>
<key>mail.out[deferral]</key>
</item>
</graph_item>
<graph_item>
<sortorder>2</sortorder>
<drawtype>FILLED_REGION</drawtype>
<color>FF0000</color>
<item>
<host>Template_OS_iPasserelle</host>
<key>mail.out[failure]</key>
</item>
</graph_item>
</graph_items>
</graph>
</graphs>
</zabbix_export>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>4.4</version>
<date>2020-03-02T14:07:54Z</date>
<version>5.0</version>
<date>2021-06-19T12:18:12Z</date>
<groups>
<group>
<name>Modèles</name>
@ -38,6 +38,7 @@
<name>Packet loss</name>
<type>SIMPLE</type>
<key>icmppingloss[,6,500,,1500]</key>
<delay>{$PING_FREQ}</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
@ -55,12 +56,12 @@
<dependencies>
<dependency>
<name>No ping response from {HOST.IP1}</name>
<expression>{$PING_INFO}=1 and {Template_Ping:icmpping[,2,,,2000].sum({$DOWN_WARN})}=0</expression>
<expression>{Template_Ping:icmpping[,2,,,2000].nodata(180,strict)}=0 and {Template_Ping:icmpping[,2,,,2000].sum({$DOWN_CRITICAL})}=0 and {Template_Ping:icmpping[,2,,,2000].dayofweek(0)}&gt;={$PING_ALERT_FROM_DAY} and {Template_Ping:icmpping[,2,,,2000].dayofweek(0)}&lt;={$PING_ALERT_TO_DAY} and {Template_Ping:icmpping[,2,,,2000].time(0)}&gt;={$PING_ALERT_FROM_HOUR} and {Template_Ping:icmpping[,2,,,2000].time(0)}&lt;={$PING_ALERT_TO_HOUR}</expression>
<recovery_expression>{Template_Ping:icmpping[,2,,,2000].sum(180)}&gt;3</recovery_expression>
</dependency>
<dependency>
<name>No ping response from {HOST.IP1}</name>
<expression>{Template_Ping:icmpping[,2,,,2000].sum({$DOWN_CRITICAL})}=0 and {Template_Ping:icmpping[,2,,,2000].dayofweek(0)}&gt;={$PING_ALERT_FROM_DAY} and {Template_Ping:icmpping[,2,,,2000].dayofweek(0)}&lt;={$PING_ALERT_TO_DAY} and {Template_Ping:icmpping[,2,,,2000].time(0)}&gt;={$PING_ALERT_FROM_HOUR} and {Template_Ping:icmpping[,2,,,2000].time(0)}&lt;={$PING_ALERT_TO_HOUR}</expression>
<expression>{Template_Ping:icmpping[,2,,,2000].sum({$DOWN_WARN})}=0</expression>
<recovery_expression>{Template_Ping:icmpping[,2,,,2000].sum(180)}&gt;3</recovery_expression>
</dependency>
</dependencies>
@ -71,6 +72,7 @@
<name>Latency</name>
<type>SIMPLE</type>
<key>icmppingsec</key>
<delay>{$PING_FREQ}</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>s</units>
@ -94,7 +96,7 @@
<name>Ping response</name>
<type>SIMPLE</type>
<key>icmpping[,2,,,2000]</key>
<delay>30s</delay>
<delay>{$PING_FREQ}</delay>
<trends>1825d</trends>
<applications>
<application>
@ -104,7 +106,20 @@
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{$PING_INFO}=1 and {sum({$DOWN_WARN})}=0</expression>
<expression>{nodata(180,strict)}=1</expression>
<name>No ping information received in last 3 minutes</name>
<priority>INFO</priority>
</trigger>
<trigger>
<expression>{nodata(180,strict)}=0 and {sum({$DOWN_CRITICAL})}=0 and {dayofweek(0)}&gt;={$PING_ALERT_FROM_DAY} and {dayofweek(0)}&lt;={$PING_ALERT_TO_DAY} and {time(0)}&gt;={$PING_ALERT_FROM_HOUR} and {time(0)}&lt;={$PING_ALERT_TO_HOUR}</expression>
<recovery_mode>RECOVERY_EXPRESSION</recovery_mode>
<recovery_expression>{sum(180)}&gt;3</recovery_expression>
<name>No ping response from {HOST.IP1}</name>
<priority>DISASTER</priority>
<manual_close>YES</manual_close>
</trigger>
<trigger>
<expression>{sum({$DOWN_WARN})}=0</expression>
<recovery_mode>RECOVERY_EXPRESSION</recovery_mode>
<recovery_expression>{sum(180)}&gt;3</recovery_expression>
<name>No ping response from {HOST.IP1}</name>
@ -113,19 +128,11 @@
<dependencies>
<dependency>
<name>No ping response from {HOST.IP1}</name>
<expression>{Template_Ping:icmpping[,2,,,2000].sum({$DOWN_CRITICAL})}=0 and {Template_Ping:icmpping[,2,,,2000].dayofweek(0)}&gt;={$PING_ALERT_FROM_DAY} and {Template_Ping:icmpping[,2,,,2000].dayofweek(0)}&lt;={$PING_ALERT_TO_DAY} and {Template_Ping:icmpping[,2,,,2000].time(0)}&gt;={$PING_ALERT_FROM_HOUR} and {Template_Ping:icmpping[,2,,,2000].time(0)}&lt;={$PING_ALERT_TO_HOUR}</expression>
<expression>{Template_Ping:icmpping[,2,,,2000].nodata(180,strict)}=0 and {Template_Ping:icmpping[,2,,,2000].sum({$DOWN_CRITICAL})}=0 and {Template_Ping:icmpping[,2,,,2000].dayofweek(0)}&gt;={$PING_ALERT_FROM_DAY} and {Template_Ping:icmpping[,2,,,2000].dayofweek(0)}&lt;={$PING_ALERT_TO_DAY} and {Template_Ping:icmpping[,2,,,2000].time(0)}&gt;={$PING_ALERT_FROM_HOUR} and {Template_Ping:icmpping[,2,,,2000].time(0)}&lt;={$PING_ALERT_TO_HOUR}</expression>
<recovery_expression>{Template_Ping:icmpping[,2,,,2000].sum(180)}&gt;3</recovery_expression>
</dependency>
</dependencies>
</trigger>
<trigger>
<expression>{sum({$DOWN_CRITICAL})}=0 and {dayofweek(0)}&gt;={$PING_ALERT_FROM_DAY} and {dayofweek(0)}&lt;={$PING_ALERT_TO_DAY} and {time(0)}&gt;={$PING_ALERT_FROM_HOUR} and {time(0)}&lt;={$PING_ALERT_TO_HOUR}</expression>
<recovery_mode>RECOVERY_EXPRESSION</recovery_mode>
<recovery_expression>{sum(180)}&gt;3</recovery_expression>
<name>No ping response from {HOST.IP1}</name>
<priority>DISASTER</priority>
<manual_close>YES</manual_close>
</trigger>
</triggers>
</item>
</items>
@ -167,9 +174,9 @@
<value>235959</value>
</macro>
<macro>
<macro>{$PING_INFO}</macro>
<value>1</value>
<description>Info alert if no response, before critical alert</description>
<macro>{$PING_FREQ}</macro>
<value>30s</value>
<description>Ping frequency</description>
</macro>
</macros>
</template>

View File

@ -0,0 +1,134 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-06-19T12:18:27Z</date>
<groups>
<group>
<name>Modèles</name>
</group>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template_PublicService_HTTP</template>
<name>Template_PublicService_HTTP</name>
<groups>
<group>
<name>Modèles</name>
</group>
<group>
<name>Templates</name>
</group>
</groups>
<items>
<item>
<name>Service HTTP</name>
<type>SIMPLE</type>
<key>net.tcp.service[http]</key>
<delay>2m</delay>
<trends>1825d</trends>
<valuemap>
<name>Service state</name>
</valuemap>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{$SERVICE_HTTP}=1 and {sum(#3)}=0</expression>
<name>Le service HTTP ne répond pas</name>
<priority>INFO</priority>
</trigger>
</triggers>
</item>
</items>
<macros>
<macro>
<macro>{$SERVICE_HTTP}</macro>
<value>1</value>
</macro>
</macros>
</template>
<template>
<template>Template_PublicService_HTTPS</template>
<name>Template_PublicService_HTTPS</name>
<groups>
<group>
<name>Modèles</name>
</group>
<group>
<name>Templates</name>
</group>
</groups>
<items>
<item>
<name>Temps de réponse HTTPS (de l'extérieur)</name>
<type>SIMPLE</type>
<key>net.tcp.service.perf[https]</key>
<delay>2m</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>s</units>
<valuemap>
<name>Service state</name>
</valuemap>
<request_method>POST</request_method>
</item>
<item>
<name>Service HTTPS (de l'extérieur)</name>
<type>SIMPLE</type>
<key>net.tcp.service[https]</key>
<delay>2m</delay>
<trends>1825d</trends>
<valuemap>
<name>Service state</name>
</valuemap>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{$SERVICE_HTTPS}=1 and {sum(#3)}=0</expression>
<name>Le service HTTPS ne répond pas</name>
<priority>INFO</priority>
</trigger>
</triggers>
</item>
</items>
<macros>
<macro>
<macro>{$SERVICE_HTTPS}</macro>
<value>1</value>
</macro>
</macros>
</template>
</templates>
<graphs>
<graph>
<name>Services: HTTPS (extérieur)</name>
<graph_items>
<graph_item>
<drawtype>GRADIENT_LINE</drawtype>
<color>C80000</color>
<item>
<host>Template_PublicService_HTTPS</host>
<key>net.tcp.service.perf[https]</key>
</item>
</graph_item>
</graph_items>
</graph>
</graphs>
<value_maps>
<value_map>
<name>Service state</name>
<mappings>
<mapping>
<value>0</value>
<newvalue>Down</newvalue>
</mapping>
<mapping>
<value>1</value>
<newvalue>Up</newvalue>
</mapping>
</mappings>
</value_map>
</value_maps>
</zabbix_export>

View File

@ -0,0 +1,723 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-06-19T12:07:00Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template SNMP QNAP NAS</template>
<name>Template SNMP QNAP NAS</name>
<templates>
<template>
<name>Template_SNMP_Interfaces</name>
</template>
</templates>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>Hard disks</name>
</application>
<application>
<name>Memory</name>
</application>
<application>
<name>Network interfaces</name>
</application>
<application>
<name>System</name>
</application>
<application>
<name>Sytem fans</name>
</application>
<application>
<name>Volumes</name>
</application>
</applications>
<items>
<item>
<name>CPU temperature</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.24681.1.3.5.0</snmp_oid>
<key>CPU-TemperatureEX</key>
<delay>5m</delay>
<trends>1825d</trends>
<units>°C</units>
<description>CPU temperature in centigrade</description>
<applications>
<application>
<name>System</name>
</application>
</applications>
<triggers>
<trigger>
<expression>{min(15m)}&gt;{$QNAP_CPU_TEMP_CRIT}</expression>
<name>CPU temp on {HOST.HOST} is {ITEM.LASTVALUE1}</name>
<priority>HIGH</priority>
</trigger>
<trigger>
<expression>{min(15m)}&gt;{$QNAP_CPU_TEMP_WARN}</expression>
<name>CPU temp on {HOST.HOST} is {ITEM.LASTVALUE1}</name>
<priority>WARNING</priority>
<dependencies>
<dependency>
<name>CPU temp on {HOST.HOST} is {ITEM.LASTVALUE1}</name>
<expression>{Template SNMP QNAP NAS:CPU-TemperatureEX.min(15m)}&gt;{$QNAP_CPU_TEMP_CRIT}</expression>
</dependency>
</dependencies>
</trigger>
</triggers>
</item>
<item>
<name>Device system name</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.24681.1.3.13.0</snmp_oid>
<key>HostNameEX</key>
<delay>3600</delay>
<history>7d</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<description>Host name</description>
<applications>
<application>
<name>System</name>
</application>
</applications>
</item>
<item>
<name>Device model name</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.24681.1.3.12.0</snmp_oid>
<key>ModelNameEX</key>
<delay>6h</delay>
<history>1d</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>System</name>
</application>
</applications>
</item>
<item>
<name>Device firmware revision</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.2.1.47.1.1.1.1.9.1</snmp_oid>
<key>PhysicalFirmwareRev</key>
<delay>30m</delay>
<history>30d</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<inventory_link>SOFTWARE</inventory_link>
<applications>
<application>
<name>System</name>
</application>
</applications>
<preprocessing>
<step>
<type>DISCARD_UNCHANGED_HEARTBEAT</type>
<params>1d</params>
</step>
</preprocessing>
<triggers>
<trigger>
<expression>{diff(0)}&gt;0</expression>
<name>Firmware on {HOST.NAME} is changed</name>
<priority>INFO</priority>
</trigger>
</triggers>
</item>
<item>
<name>Device hardware revision</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.2.1.47.1.1.1.1.8.1</snmp_oid>
<key>PhysicalHardwareRev</key>
<delay>6h</delay>
<history>1d</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<inventory_link>HARDWARE</inventory_link>
<applications>
<application>
<name>System</name>
</application>
</applications>
</item>
<item>
<name>Device software revision</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.2.1.47.1.1.1.1.10.1</snmp_oid>
<key>PhysicalSoftwareRev</key>
<delay>3600</delay>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>System</name>
</application>
</applications>
</item>
<item>
<name>Device vendor name</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.2.1.47.1.1.1.1.12.1</snmp_oid>
<key>sysPhysicalMfgName</key>
<delay>3600</delay>
<history>1d</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<inventory_link>VENDOR</inventory_link>
<applications>
<application>
<name>System</name>
</application>
</applications>
</item>
<item>
<name>CPU usage</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.24681.1.3.1.0</snmp_oid>
<key>SystemCPU-UsageEX</key>
<delay>60</delay>
<trends>1825d</trends>
<units>%</units>
<description>System CPU usage</description>
<applications>
<application>
<name>System</name>
</application>
</applications>
<triggers>
<trigger>
<expression>{min(15m)}&gt;80</expression>
<name>CPU utilization on {HOST.NAME} is over 80% for 15 min</name>
<priority>WARNING</priority>
</trigger>
<trigger>
<expression>{min(15m)}&gt;95</expression>
<name>CPU utilization on {HOST.NAME} is over 95% for 15 min</name>
<priority>AVERAGE</priority>
</trigger>
</triggers>
</item>
<item>
<name>System free memory</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.24681.1.3.3.0</snmp_oid>
<key>SystemFreeMemEX</key>
<delay>2m</delay>
<trends>1825d</trends>
<units>B</units>
<applications>
<application>
<name>System</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>1000</params>
</step>
</preprocessing>
</item>
<item>
<name>System free memory (%)</name>
<type>CALCULATED</type>
<key>SystemPFreeMemEX</key>
<delay>2m</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<params>last(SystemFreeMemEX)/(last(SystemTotalMemEX)/100)</params>
<applications>
<application>
<name>System</name>
</application>
</applications>
</item>
<item>
<name>System temperature</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.24681.1.3.6.0</snmp_oid>
<key>SystemTemperatureEX</key>
<delay>5m</delay>
<trends>1825d</trends>
<units>°C</units>
<description>System temperature in centigrade</description>
<applications>
<application>
<name>System</name>
</application>
</applications>
</item>
<item>
<name>System total memory</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.24681.1.3.2.0</snmp_oid>
<key>SystemTotalMemEX</key>
<delay>10800</delay>
<trends>1825d</trends>
<units>b</units>
<applications>
<application>
<name>System</name>
</application>
</applications>
</item>
<item>
<name>System used memory</name>
<type>CALCULATED</type>
<key>SystemUsedMemEX</key>
<delay>2m</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>B</units>
<params>last(SystemTotalMemEX)-last(SystemFreeMemEX)</params>
<applications>
<application>
<name>System</name>
</application>
</applications>
</item>
<item>
<name>System uptime</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.2.1.25.1.1.0</snmp_oid>
<key>sysUptime</key>
<delay>60s</delay>
<trends>1825d</trends>
<units>uptime</units>
<applications>
<application>
<name>System</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>0.01</params>
</step>
</preprocessing>
<triggers>
<trigger>
<expression>{change(0)}&lt;0</expression>
<name>{HOST.NAME} has just been restarted</name>
<priority>HIGH</priority>
</trigger>
</triggers>
</item>
</items>
<discovery_rules>
<discovery_rule>
<name>System fans discovery</name>
<type>SNMP_AGENT</type>
<snmp_oid>discovery[{#SNMPVALUE},.1.3.6.1.4.1.24681.1.3.15.1.2]</snmp_oid>
<key>sysFans.discovery</key>
<delay>1h</delay>
<item_prototypes>
<item_prototype>
<name>Speed of {#SNMPVALUE}</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.24681.1.3.15.1.3.{#SNMPINDEX}</snmp_oid>
<key>SysFanSpeedEX[{#SNMPINDEX}]</key>
<delay>60</delay>
<history>1d</history>
<units>RPM</units>
<applications>
<application>
<name>Sytem fans</name>
</application>
</applications>
<trigger_prototypes>
<trigger_prototype>
<expression>{max(60)}=0</expression>
<name>{#SNMPVALUE} fan on {HOST.NAME} possibly is stopped</name>
<priority>WARNING</priority>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
</item_prototypes>
</discovery_rule>
<discovery_rule>
<name>Hard disks discovery</name>
<type>SNMP_AGENT</type>
<snmp_oid>discovery[{#SNMPVALUE},.1.3.6.1.4.1.24681.1.3.11.1.2,{#DISK_STATUS},.1.3.6.1.4.1.24681.1.3.11.1.4]</snmp_oid>
<key>sysHDs.discovery</key>
<delay>1h</delay>
<filter>
<conditions>
<condition>
<macro>{#DISK_STATUS}</macro>
<value>-5</value>
<operator>NOT_MATCHES_REGEX</operator>
<formulaid>A</formulaid>
</condition>
</conditions>
</filter>
<item_prototypes>
<item_prototype>
<name>Capacity of {#SNMPVALUE}</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.24681.1.3.11.1.6.{#SNMPINDEX}</snmp_oid>
<key>HdCapacityEX[{#SNMPINDEX}]</key>
<delay>2h</delay>
<trends>1825d</trends>
<units>B</units>
<applications>
<application>
<name>Hard disks</name>
</application>
</applications>
</item_prototype>
<item_prototype>
<name>Model of {#SNMPVALUE}</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.24681.1.3.11.1.5.{#SNMPINDEX}</snmp_oid>
<key>HdModelEX[{#SNMPINDEX}]</key>
<delay>2h</delay>
<history>30d</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>Hard disks</name>
</application>
</applications>
</item_prototype>
<item_prototype>
<name>S.M.A.R.T. info of {#SNMPVALUE}</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.24681.1.3.11.1.7.{#SNMPINDEX}</snmp_oid>
<key>HdSmartInfoEX[{#SNMPINDEX}]</key>
<delay>5m</delay>
<history>30d</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>Hard disks</name>
</application>
</applications>
<trigger_prototypes>
<trigger_prototype>
<expression>{iregexp(abnormal)}=1</expression>
<name>SMART state of {#SNMPVALUE} on {HOST.NAME} is ABNORMAL</name>
<priority>AVERAGE</priority>
<description>Abnormal&#13;
1. Any SMART value is equal or less than trhreshold.&#13;
2. Hard Disk temperature is higher than 65 degree C.&#13;
--------&#13;
QNAP Knowledgebase</description>
</trigger_prototype>
<trigger_prototype>
<expression>{iregexp(normal)}=1</expression>
<name>SMART state of {#SNMPVALUE} on {HOST.NAME} is not GOOD ({ITEM.VALUE1})</name>
<priority>WARNING</priority>
<description>Normal&#13;
1. Any Smart value is equal or less than threhold + (initial_SMART_value - threhold)/2. For example, if the initial SMART value is 100, the current value is 50, the threshold is 20, then the Smart value, 50, is less than 20+(100-20)/2. Thus, the health level would be Normal.&#13;
2. Any SMART test(Rapid or Complete) result of last 20 times is abnormal.&#13;
3. Hard Disk temperature is between 55 to 65 degree C.&#13;
--------&#13;
QNAP Knowledgebase</description>
<dependencies>
<dependency>
<name>SMART state of {#SNMPVALUE} on {HOST.NAME} is ABNORMAL</name>
<expression>{Template SNMP QNAP NAS:HdSmartInfoEX[{#SNMPINDEX}].iregexp(abnormal)}=1</expression>
</dependency>
</dependencies>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
<item_prototype>
<name>Status of {#SNMPVALUE}</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.24681.1.3.11.1.4.{#SNMPINDEX}</snmp_oid>
<key>HdStatusEX[{#SNMPINDEX}]</key>
<delay>5m</delay>
<history>30d</history>
<trends>0</trends>
<value_type>FLOAT</value_type>
<applications>
<application>
<name>Hard disks</name>
</application>
</applications>
<trigger_prototypes>
<trigger_prototype>
<expression>{last(0)}&lt;&gt;0</expression>
<name>Disk {#SNMPVALUE} on {HOST.NAME} must be checked ({ITEM.LASTVALUE1})</name>
<priority>WARNING</priority>
</trigger_prototype>
<trigger_prototype>
<expression>{last(0)}&lt;&gt;0</expression>
<name>State of {#SNMPVALUE} on {HOST.NAME} is not &quot;Ready&quot; ({ITEM.VALUE1})</name>
<priority>INFO</priority>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
<item_prototype>
<name>Temperature of {#SNMPVALUE}</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.24681.1.3.11.1.3.{#SNMPINDEX}</snmp_oid>
<key>HdTemperatureEX[{#SNMPINDEX}]</key>
<delay>5m</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>C</units>
<applications>
<application>
<name>Hard disks</name>
</application>
</applications>
<trigger_prototypes>
<trigger_prototype>
<expression>{min(15m)}&gt;{$HD_TEMPERATURE_WARNING}</expression>
<name>Temperature of {#SNMPVALUE} on {HOST.NAME} is {ITEM.LASTVALUE1}</name>
<priority>WARNING</priority>
</trigger_prototype>
<trigger_prototype>
<expression>{min(15m)}&gt;{$QNAP_HD_TEMP_CRIT}</expression>
<name>Temperature of {#SNMPVALUE} on {HOST.NAME} is {ITEM.LASTVALUE1}</name>
<priority>HIGH</priority>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
</item_prototypes>
</discovery_rule>
<discovery_rule>
<name>Volumes discovery</name>
<type>SNMP_AGENT</type>
<snmp_oid>discovery[{#SNMPVALUE},.1.3.6.1.4.1.24681.1.3.17.1.2]</snmp_oid>
<key>sysVolumes.discovery</key>
<delay>1h</delay>
<lifetime>7d</lifetime>
<item_prototypes>
<item_prototype>
<name>Free size of {#SNMPVALUE}</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.24681.1.3.17.1.5.{#SNMPINDEX}</snmp_oid>
<key>SysVolumeFreeSizeEX[{#SNMPINDEX}]</key>
<delay>10m</delay>
<trends>1825d</trends>
<units>B</units>
<applications>
<application>
<name>Volumes</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>1024</params>
</step>
</preprocessing>
</item_prototype>
<item_prototype>
<name>Free size of {#SNMPVALUE} (%)</name>
<type>CALCULATED</type>
<key>SysVolumePFreeSizeEX[{#SNMPINDEX}]</key>
<delay>10m</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<params>last(SysVolumeFreeSizeEX[{#SNMPINDEX}])/(last(SysVolumeTotalSizeEX[{#SNMPINDEX}])/100)</params>
<applications>
<application>
<name>Volumes</name>
</application>
</applications>
<trigger_prototypes>
<trigger_prototype>
<expression>{last(0)}&lt;(100-{$QNAP_VOL_USAGE_WARN})</expression>
<name>Only {ITEM.LASTVALUE1} free space on volume {#SNMPVALUE}</name>
<priority>WARNING</priority>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
<item_prototype>
<name>Status of {#SNMPVALUE}</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.24681.1.3.17.1.6.{#SNMPINDEX}</snmp_oid>
<key>SysVolumeStatusEX[{#SNMPINDEX}]</key>
<delay>10m</delay>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>Volumes</name>
</application>
</applications>
<trigger_prototypes>
<trigger_prototype>
<expression>{regexp(Ready)}&lt;&gt;1</expression>
<name>{#SNMPVALUE} is not ready</name>
<priority>WARNING</priority>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
<item_prototype>
<name>Total size of {#SNMPVALUE}</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.24681.1.3.17.1.4.{#SNMPINDEX}</snmp_oid>
<key>SysVolumeTotalSizeEX[{#SNMPINDEX}]</key>
<delay>1h</delay>
<trends>1825d</trends>
<units>B</units>
<applications>
<application>
<name>Volumes</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>1024</params>
</step>
</preprocessing>
</item_prototype>
<item_prototype>
<name>Used size of {#SNMPVALUE}</name>
<type>CALCULATED</type>
<key>SysVolumeUsedSizeEX[{#SNMPINDEX}]</key>
<delay>10m</delay>
<trends>1825d</trends>
<units>B</units>
<params>last(SysVolumeTotalSizeEX[{#SNMPINDEX}])-last(SysVolumeFreeSizeEX[{#SNMPINDEX}])</params>
<applications>
<application>
<name>Volumes</name>
</application>
</applications>
</item_prototype>
</item_prototypes>
<graph_prototypes>
<graph_prototype>
<name>Volume {#SNMPVALUE} usage</name>
<ymin_type_1>FIXED</ymin_type_1>
<graph_items>
<graph_item>
<drawtype>GRADIENT_LINE</drawtype>
<color>8888FF</color>
<calc_fnc>MAX</calc_fnc>
<item>
<host>Template SNMP QNAP NAS</host>
<key>SysVolumeTotalSizeEX[{#SNMPINDEX}]</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<drawtype>FILLED_REGION</drawtype>
<color>008800</color>
<calc_fnc>MAX</calc_fnc>
<item>
<host>Template SNMP QNAP NAS</host>
<key>SysVolumeUsedSizeEX[{#SNMPINDEX}]</key>
</item>
</graph_item>
</graph_items>
</graph_prototype>
</graph_prototypes>
</discovery_rule>
</discovery_rules>
<macros>
<macro>
<macro>{$QNAP_CPU_TEMP_CRIT}</macro>
<value>70</value>
</macro>
<macro>
<macro>{$QNAP_CPU_TEMP_WARN}</macro>
<value>60</value>
</macro>
<macro>
<macro>{$QNAP_HD_TEMP_CRIT}</macro>
<value>55</value>
</macro>
<macro>
<macro>{$QNAP_HD_TEMP_WARN}</macro>
<value>47</value>
</macro>
<macro>
<macro>{$QNAP_VOL_USAGE_WARN}</macro>
<value>90</value>
</macro>
<macro>
<macro>{$SNMP_COMMUNITY}</macro>
<value>public</value>
</macro>
<macro>
<macro>{$SNMP_PORT}</macro>
<value>161</value>
</macro>
</macros>
</template>
</templates>
<graphs>
<graph>
<name>CPU utilization</name>
<ymin_type_1>FIXED</ymin_type_1>
<graph_items>
<graph_item>
<drawtype>GRADIENT_LINE</drawtype>
<color>FF0000</color>
<item>
<host>Template SNMP QNAP NAS</host>
<key>SystemCPU-UsageEX</key>
</item>
</graph_item>
</graph_items>
</graph>
<graph>
<name>Device temperature</name>
<ymin_type_1>FIXED</ymin_type_1>
<graph_items>
<graph_item>
<color>BB0000</color>
<item>
<host>Template SNMP QNAP NAS</host>
<key>CPU-TemperatureEX</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<color>0000BB</color>
<item>
<host>Template SNMP QNAP NAS</host>
<key>SystemTemperatureEX</key>
</item>
</graph_item>
</graph_items>
</graph>
<graph>
<name>Memory usage</name>
<ymin_type_1>FIXED</ymin_type_1>
<graph_items>
<graph_item>
<drawtype>GRADIENT_LINE</drawtype>
<color>B2EBF2</color>
<calc_fnc>MAX</calc_fnc>
<item>
<host>Template SNMP QNAP NAS</host>
<key>SystemTotalMemEX</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<drawtype>FILLED_REGION</drawtype>
<color>66BB6A</color>
<item>
<host>Template SNMP QNAP NAS</host>
<key>SystemUsedMemEX</key>
</item>
</graph_item>
</graph_items>
</graph>
</graphs>
</zabbix_export>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>4.4</version>
<date>2020-03-02T14:10:14Z</date>
<version>5.0</version>
<date>2021-06-19T10:41:22Z</date>
<groups>
<group>
<name>Templates</name>
@ -9,8 +9,8 @@
</groups>
<templates>
<template>
<template>Model_SNMP_Device</template>
<name>Model_SNMP_Device</name>
<template>Template_SNMP_Device</template>
<name>Template_SNMP_Device</name>
<templates>
<template>
<name>Template_Ping</name>
@ -24,8 +24,7 @@
<items>
<item>
<name>Contact</name>
<type>SNMPV2</type>
<snmp_community>{$SNMP_COMMUNITY}</snmp_community>
<type>SNMP_AGENT</type>
<snmp_oid>SNMPv2-MIB::sysContact.0</snmp_oid>
<key>sysContact</key>
<delay>2h</delay>
@ -36,8 +35,7 @@
</item>
<item>
<name>Description</name>
<type>SNMPV2</type>
<snmp_community>{$SNMP_COMMUNITY}</snmp_community>
<type>SNMP_AGENT</type>
<snmp_oid>SNMPv2-MIB::sysDescr.0</snmp_oid>
<key>sysDescr</key>
<delay>2h</delay>
@ -48,8 +46,7 @@
</item>
<item>
<name>Location</name>
<type>SNMPV2</type>
<snmp_community>{$SNMP_COMMUNITY}</snmp_community>
<type>SNMP_AGENT</type>
<snmp_oid>SNMPv2-MIB::sysLocation.0</snmp_oid>
<key>sysLocation</key>
<delay>2h</delay>
@ -60,8 +57,7 @@
</item>
<item>
<name>Device name</name>
<type>SNMPV2</type>
<snmp_community>{$SNMP_COMMUNITY}</snmp_community>
<type>SNMP_AGENT</type>
<snmp_oid>SNMPv2-MIB::sysName.0</snmp_oid>
<key>sysName</key>
<delay>2h</delay>
@ -72,8 +68,7 @@
</item>
<item>
<name>Uptime</name>
<type>SNMPV2</type>
<snmp_community>{$SNMP_COMMUNITY}</snmp_community>
<type>SNMP_AGENT</type>
<snmp_oid>DISMAN-EVENT-MIB::sysUpTimeInstance</snmp_oid>
<key>sysUpTimeInstance</key>
<delay>10m</delay>
@ -89,7 +84,7 @@
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{last()}&lt;7200</expression>
<expression>{last()}&lt;{$SNMP_REBOOT_WARN}</expression>
<name>Device rebooted {ITEM.LASTVALUE1} ago</name>
<priority>WARNING</priority>
</trigger>
@ -101,6 +96,10 @@
<macro>{$SNMP_COMMUNITY}</macro>
<value>public</value>
</macro>
<macro>
<macro>{$SNMP_REBOOT_WARN}</macro>
<value>7200</value>
</macro>
</macros>
</template>
</templates>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>4.4</version>
<date>2020-03-02T14:10:38Z</date>
<version>5.0</version>
<date>2021-06-19T10:41:36Z</date>
<groups>
<group>
<name>Templates</name>
@ -9,11 +9,11 @@
</groups>
<templates>
<template>
<template>Model_SNMP_Interfaces</template>
<name>Model_SNMP_Interfaces</name>
<template>Template_SNMP_Interfaces</template>
<name>Template_SNMP_Interfaces</name>
<templates>
<template>
<name>Model_SNMP_Device</name>
<name>Template_SNMP_Device</name>
</template>
</templates>
<groups>
@ -29,32 +29,42 @@
<discovery_rules>
<discovery_rule>
<name>Interfaces</name>
<type>SNMPV2</type>
<snmp_community>{$SNMP_COMMUNITY}</snmp_community>
<snmp_oid>discovery[{#IFINDEX},IF-MIB::ifIndex,{#IFNAME},IF-MIB::ifName,{#IFDESCR},IF-MIB::ifDescr,{#IFSTATUS},IF-MIB::ifOperStatus]</snmp_oid>
<type>SNMP_AGENT</type>
<snmp_oid>discovery[{#IFINDEX},IF-MIB::ifIndex,{#IFNAME},IF-MIB::ifName,{#IFDESCR},IF-MIB::ifDescr,{#IFSTATUS},IF-MIB::ifOperStatus,{#IFTYPE},IF-MIB::ifType]</snmp_oid>
<key>ifIndex.discovery</key>
<delay>1h</delay>
<filter>
<evaltype>AND</evaltype>
<conditions>
<condition>
<macro>{#IFSTATUS}</macro>
<value>^(1|2)$</value>
<formulaid>B</formulaid>
<formulaid>C</formulaid>
</condition>
<condition>
<macro>{#IFNAME}</macro>
<value>^Po[1-9]\d\d?</value>
<operator>NOT_MATCHES_REGEX</operator>
<formulaid>B</formulaid>
</condition>
<condition>
<macro>{#IFNAME}</macro>
<value>^0/3/\d\d+</value>
<operator>NOT_MATCHES_REGEX</operator>
<formulaid>A</formulaid>
</condition>
<condition>
<macro>{#IFTYPE}</macro>
<value>^(6|161|200|169|56|23)$</value>
<formulaid>D</formulaid>
</condition>
</conditions>
</filter>
<lifetime>2d</lifetime>
<item_prototypes>
<item_prototype>
<name>Admin status of {#IFNAME}</name>
<type>SNMPV2</type>
<snmp_community>{$SNMP_COMMUNITY}</snmp_community>
<type>SNMP_AGENT</type>
<snmp_oid>IF-MIB::ifAdminStatus.{#SNMPINDEX}</snmp_oid>
<key>ifAdminStatus[{#IFINDEX},{#SNMPINDEX}]</key>
<delay>6h</delay>
@ -75,8 +85,7 @@
</item_prototype>
<item_prototype>
<name>{#IFNAME} interface alias</name>
<type>SNMPV2</type>
<snmp_community>{$SNMP_COMMUNITY}</snmp_community>
<type>SNMP_AGENT</type>
<snmp_oid>IF-MIB::ifAlias.{#SNMPINDEX}</snmp_oid>
<key>ifAlias[{#IFINDEX},{#SNMPINDEX}]</key>
<delay>6h</delay>
@ -98,8 +107,7 @@
</item_prototype>
<item_prototype>
<name>{#IFNAME} interface description</name>
<type>SNMPV2</type>
<snmp_community>{$SNMP_COMMUNITY}</snmp_community>
<type>SNMP_AGENT</type>
<snmp_oid>IF-MIB::ifDescr.{#SNMPINDEX}</snmp_oid>
<key>ifDescr[{#IFINDEX},{#SNMPINDEX}]</key>
<delay>6h</delay>
@ -121,8 +129,7 @@
</item_prototype>
<item_prototype>
<name>Rejected inbound packets on {#IFNAME}</name>
<type>SNMPV2</type>
<snmp_community>{$SNMP_COMMUNITY}</snmp_community>
<type>SNMP_AGENT</type>
<snmp_oid>IF-MIB::ifInDiscards.{#SNMPINDEX}</snmp_oid>
<key>ifInDiscards[{#IFINDEX},{#SNMPINDEX}]</key>
<delay>1h</delay>
@ -147,8 +154,7 @@
</item_prototype>
<item_prototype>
<name>Inbound errors on {#IFNAME}</name>
<type>SNMPV2</type>
<snmp_community>{$SNMP_COMMUNITY}</snmp_community>
<type>SNMP_AGENT</type>
<snmp_oid>IF-MIB::ifInErrors.{#SNMPINDEX}</snmp_oid>
<key>ifInErrors[{#IFINDEX},{#SNMPINDEX}]</key>
<delay>15m</delay>
@ -173,11 +179,10 @@
</item_prototype>
<item_prototype>
<name>Inbound trafic on {#IFNAME}</name>
<type>SNMPV2</type>
<snmp_community>{$SNMP_COMMUNITY}</snmp_community>
<type>SNMP_AGENT</type>
<snmp_oid>IF-MIB::ifHCInOctets.{#SNMPINDEX}</snmp_oid>
<key>ifInOctets[{#IFINDEX},{#SNMPINDEX}]</key>
<delay>5m</delay>
<delay>3m</delay>
<history>30d</history>
<trends>730d</trends>
<units>bps</units>
@ -204,8 +209,7 @@
</item_prototype>
<item_prototype>
<name>Last state change for {#IFNAME}</name>
<type>SNMPV2</type>
<snmp_community>{$SNMP_COMMUNITY}</snmp_community>
<type>SNMP_AGENT</type>
<snmp_oid>IF-MIB::ifLastChange.{#SNMPINDEX}</snmp_oid>
<key>ifLastChange[{#IFINDEX},{#SNMPINDEX}]</key>
<delay>10m</delay>
@ -227,8 +231,7 @@
</item_prototype>
<item_prototype>
<name>Operational status of {#IFNAME}</name>
<type>SNMPV2</type>
<snmp_community>{$SNMP_COMMUNITY}</snmp_community>
<type>SNMP_AGENT</type>
<snmp_oid>IF-MIB::ifOperStatus.{#SNMPINDEX}</snmp_oid>
<key>ifOperStatus[{#IFINDEX},{#SNMPINDEX}]</key>
<delay>10m</delay>
@ -249,8 +252,7 @@
</item_prototype>
<item_prototype>
<name>Rejected outbound packets on {#IFNAME}</name>
<type>SNMPV2</type>
<snmp_community>{$SNMP_COMMUNITY}</snmp_community>
<type>SNMP_AGENT</type>
<snmp_oid>IF-MIB::ifOutDiscards.{#SNMPINDEX}</snmp_oid>
<key>ifOutDiscards[{#IFINDEX},{#SNMPINDEX}]</key>
<delay>1h</delay>
@ -275,8 +277,7 @@
</item_prototype>
<item_prototype>
<name>Outbound errors on {#IFNAME}</name>
<type>SNMPV2</type>
<snmp_community>{$SNMP_COMMUNITY}</snmp_community>
<type>SNMP_AGENT</type>
<snmp_oid>IF-MIB::ifOutErrors.{#SNMPINDEX}</snmp_oid>
<key>ifOutErrors[{#IFINDEX},{#SNMPINDEX}]</key>
<delay>15m</delay>
@ -301,11 +302,10 @@
</item_prototype>
<item_prototype>
<name>Outbound trafic on {#IFNAME}</name>
<type>SNMPV2</type>
<snmp_community>{$SNMP_COMMUNITY}</snmp_community>
<type>SNMP_AGENT</type>
<snmp_oid>IF-MIB::ifHCOutOctets.{#SNMPINDEX}</snmp_oid>
<key>ifOutOctets[{#IFINDEX},{#SNMPINDEX}]</key>
<delay>5m</delay>
<delay>3m</delay>
<history>30d</history>
<trends>730d</trends>
<units>bps</units>
@ -333,7 +333,7 @@
</item_prototypes>
<trigger_prototypes>
<trigger_prototype>
<expression>{$ALERT_ON_IF_CHANGE}=1 and ({Model_SNMP_Interfaces:sysUpTimeInstance.last()}-{Model_SNMP_Interfaces:ifLastChange[{#IFINDEX},{#SNMPINDEX}].last()})&lt;1800 and {Model_SNMP_Interfaces:ifLastChange[{#IFINDEX},{#SNMPINDEX}].last()} &gt; 0</expression>
<expression>{$ALERT_ON_IF_CHANGE}=1 and ({Template_SNMP_Interfaces:sysUpTimeInstance.last()}-{Template_SNMP_Interfaces:ifLastChange[{#IFINDEX},{#SNMPINDEX}].last()})&lt;1800 and {Template_SNMP_Interfaces:ifLastChange[{#IFINDEX},{#SNMPINDEX}].last()} &gt; 0</expression>
<name>{#IFNAME} state changed</name>
<priority>AVERAGE</priority>
</trigger_prototype>
@ -341,67 +341,27 @@
<graph_prototypes>
<graph_prototype>
<name>Trafic on {#IFNAME} ({#IFINDEX} - {#IFDESCR})</name>
<percent_left>0.9500</percent_left>
<percent_right>0.9500</percent_right>
<percent_left>0.95</percent_left>
<percent_right>0.95</percent_right>
<graph_items>
<graph_item>
<drawtype>FILLED_REGION</drawtype>
<drawtype>GRADIENT_LINE</drawtype>
<color>00CF00</color>
<item>
<host>Model_SNMP_Interfaces</host>
<host>Template_SNMP_Interfaces</host>
<key>ifInOctets[{#IFINDEX},{#SNMPINDEX}]</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<drawtype>BOLD_LINE</drawtype>
<drawtype>GRADIENT_LINE</drawtype>
<color>002A97</color>
<yaxisside>RIGHT</yaxisside>
<item>
<host>Model_SNMP_Interfaces</host>
<host>Template_SNMP_Interfaces</host>
<key>ifOutOctets[{#IFINDEX},{#SNMPINDEX}]</key>
</item>
</graph_item>
<graph_item>
<sortorder>2</sortorder>
<drawtype>GRADIENT_LINE</drawtype>
<color>FFAB00</color>
<yaxisside>RIGHT</yaxisside>
<item>
<host>Model_SNMP_Interfaces</host>
<key>ifInDiscards[{#IFINDEX},{#SNMPINDEX}]</key>
</item>
</graph_item>
<graph_item>
<sortorder>3</sortorder>
<drawtype>GRADIENT_LINE</drawtype>
<color>F51D30</color>
<yaxisside>RIGHT</yaxisside>
<item>
<host>Model_SNMP_Interfaces</host>
<key>ifInErrors[{#IFINDEX},{#SNMPINDEX}]</key>
</item>
</graph_item>
<graph_item>
<sortorder>4</sortorder>
<drawtype>GRADIENT_LINE</drawtype>
<color>C4FD3D</color>
<yaxisside>RIGHT</yaxisside>
<item>
<host>Model_SNMP_Interfaces</host>
<key>ifOutDiscards[{#IFINDEX},{#SNMPINDEX}]</key>
</item>
</graph_item>
<graph_item>
<sortorder>5</sortorder>
<drawtype>GRADIENT_LINE</drawtype>
<color>00694A</color>
<yaxisside>RIGHT</yaxisside>
<item>
<host>Model_SNMP_Interfaces</host>
<key>ifOutErrors[{#IFINDEX},{#SNMPINDEX}]</key>
</item>
</graph_item>
</graph_items>
</graph_prototype>
</graph_prototypes>

View File

@ -0,0 +1,302 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-06-19T10:41:59Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template_SNMP_Interface_Basic</template>
<name>Template_SNMP_Interface_Basic</name>
<description>For basic SNMP devices, without IfName, nor 64 bit counters</description>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>Interface(s)</name>
</application>
</applications>
<discovery_rules>
<discovery_rule>
<name>Interfaces</name>
<type>SNMP_AGENT</type>
<snmp_oid>discovery[{#IFINDEX},IF-MIB::ifIndex,{#IFDESCR},IF-MIB::ifDescr,{#IFSTATUS},IF-MIB::ifOperStatus,{#IFTYPE},IF-MIB::ifType]</snmp_oid>
<key>ifIndex.discovery</key>
<delay>1h</delay>
<filter>
<evaltype>AND</evaltype>
<conditions>
<condition>
<macro>{#IFSTATUS}</macro>
<value>^(1|2)$</value>
<formulaid>A</formulaid>
</condition>
<condition>
<macro>{#IFTYPE}</macro>
<value>^(6|161|200|169|56|23)$</value>
<formulaid>B</formulaid>
</condition>
</conditions>
</filter>
<lifetime>2d</lifetime>
<item_prototypes>
<item_prototype>
<name>Admin status of {#IFDESCR}</name>
<type>SNMP_AGENT</type>
<snmp_oid>IF-MIB::ifAdminStatus.{#SNMPINDEX}</snmp_oid>
<key>ifAdminStatus[{#IFINDEX},{#SNMPINDEX}]</key>
<delay>6h</delay>
<history>30d</history>
<trends>0</trends>
<applications>
<application>
<name>Interface(s)</name>
</application>
</applications>
<preprocessing>
<step>
<type>DISCARD_UNCHANGED_HEARTBEAT</type>
<params>1d</params>
</step>
</preprocessing>
</item_prototype>
<item_prototype>
<name>Rejected inbound packets on {#IFDESCR}</name>
<type>SNMP_AGENT</type>
<snmp_oid>IF-MIB::ifInDiscards.{#SNMPINDEX}</snmp_oid>
<key>ifInDiscards[{#IFINDEX},{#SNMPINDEX}]</key>
<delay>1h</delay>
<history>30d</history>
<trends>730d</trends>
<units>bps</units>
<applications>
<application>
<name>Interface(s)</name>
</application>
</applications>
<preprocessing>
<step>
<type>SIMPLE_CHANGE</type>
<params/>
</step>
<step>
<type>DISCARD_UNCHANGED_HEARTBEAT</type>
<params>1d</params>
</step>
</preprocessing>
</item_prototype>
<item_prototype>
<name>Inbound errors on {#IFDESCR}</name>
<type>SNMP_AGENT</type>
<snmp_oid>IF-MIB::ifInErrors.{#SNMPINDEX}</snmp_oid>
<key>ifInErrors[{#IFINDEX},{#SNMPINDEX}]</key>
<delay>15m</delay>
<history>30d</history>
<trends>730d</trends>
<applications>
<application>
<name>Interface(s)</name>
</application>
</applications>
<preprocessing>
<step>
<type>SIMPLE_CHANGE</type>
<params/>
</step>
<step>
<type>DISCARD_UNCHANGED_HEARTBEAT</type>
<params>1d</params>
</step>
</preprocessing>
</item_prototype>
<item_prototype>
<name>Inbound trafic on {#IFDESCR}</name>
<type>SNMP_AGENT</type>
<snmp_oid>IF-MIB::ifInOctets.{#SNMPINDEX}</snmp_oid>
<key>ifInOctets[{#IFINDEX},{#SNMPINDEX}]</key>
<delay>3m</delay>
<history>30d</history>
<trends>730d</trends>
<units>bps</units>
<applications>
<application>
<name>Interface(s)</name>
</application>
</applications>
<preprocessing>
<step>
<type>CHANGE_PER_SECOND</type>
<params/>
</step>
<step>
<type>MULTIPLIER</type>
<params>8</params>
</step>
<step>
<type>DISCARD_UNCHANGED_HEARTBEAT</type>
<params>3200</params>
</step>
</preprocessing>
</item_prototype>
<item_prototype>
<name>Last state change for {#IFDESCR}</name>
<type>SNMP_AGENT</type>
<snmp_oid>IF-MIB::ifLastChange.{#SNMPINDEX}</snmp_oid>
<key>ifLastChange[{#IFINDEX},{#SNMPINDEX}]</key>
<delay>10m</delay>
<history>30d</history>
<trends>0</trends>
<units>s</units>
<applications>
<application>
<name>Interface(s)</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>0.01</params>
</step>
</preprocessing>
</item_prototype>
<item_prototype>
<name>Operational status of {#IFDESCR}</name>
<type>SNMP_AGENT</type>
<snmp_oid>IF-MIB::ifOperStatus.{#SNMPINDEX}</snmp_oid>
<key>ifOperStatus[{#IFINDEX},{#SNMPINDEX}]</key>
<delay>10m</delay>
<history>30d</history>
<trends>0</trends>
<applications>
<application>
<name>Interface(s)</name>
</application>
</applications>
<preprocessing>
<step>
<type>DISCARD_UNCHANGED_HEARTBEAT</type>
<params>1d</params>
</step>
</preprocessing>
</item_prototype>
<item_prototype>
<name>Rejected outbound packets on {#IFDESCR}</name>
<type>SNMP_AGENT</type>
<snmp_oid>IF-MIB::ifOutDiscards.{#SNMPINDEX}</snmp_oid>
<key>ifOutDiscards[{#IFINDEX},{#SNMPINDEX}]</key>
<delay>1h</delay>
<history>30d</history>
<trends>730d</trends>
<units>bps</units>
<applications>
<application>
<name>Interface(s)</name>
</application>
</applications>
<preprocessing>
<step>
<type>SIMPLE_CHANGE</type>
<params/>
</step>
<step>
<type>DISCARD_UNCHANGED_HEARTBEAT</type>
<params>1d</params>
</step>
</preprocessing>
</item_prototype>
<item_prototype>
<name>Outbound errors on {#IFDESCR}</name>
<type>SNMP_AGENT</type>
<snmp_oid>IF-MIB::ifOutErrors.{#SNMPINDEX}</snmp_oid>
<key>ifOutErrors[{#IFINDEX},{#SNMPINDEX}]</key>
<delay>15m</delay>
<history>30d</history>
<trends>0</trends>
<applications>
<application>
<name>Interface(s)</name>
</application>
</applications>
<preprocessing>
<step>
<type>SIMPLE_CHANGE</type>
<params/>
</step>
<step>
<type>DISCARD_UNCHANGED_HEARTBEAT</type>
<params>1d</params>
</step>
</preprocessing>
</item_prototype>
<item_prototype>
<name>Outbound trafic on {#IFDESCR}</name>
<type>SNMP_AGENT</type>
<snmp_oid>IF-MIB::ifOutOctets.{#SNMPINDEX}</snmp_oid>
<key>ifOutOctets[{#IFINDEX},{#SNMPINDEX}]</key>
<delay>3m</delay>
<history>30d</history>
<trends>730d</trends>
<units>bps</units>
<applications>
<application>
<name>Interface(s)</name>
</application>
</applications>
<preprocessing>
<step>
<type>CHANGE_PER_SECOND</type>
<params/>
</step>
<step>
<type>MULTIPLIER</type>
<params>8</params>
</step>
<step>
<type>DISCARD_UNCHANGED_HEARTBEAT</type>
<params>3200</params>
</step>
</preprocessing>
</item_prototype>
</item_prototypes>
<graph_prototypes>
<graph_prototype>
<name>Trafic on {#IFDESCR} ({#IFINDEX})</name>
<graph_items>
<graph_item>
<drawtype>GRADIENT_LINE</drawtype>
<color>00CF00</color>
<item>
<host>Template_SNMP_Interface_Basic</host>
<key>ifInOctets[{#IFINDEX},{#SNMPINDEX}]</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<drawtype>GRADIENT_LINE</drawtype>
<color>002A97</color>
<yaxisside>RIGHT</yaxisside>
<item>
<host>Template_SNMP_Interface_Basic</host>
<key>ifOutOctets[{#IFINDEX},{#SNMPINDEX}]</key>
</item>
</graph_item>
</graph_items>
</graph_prototype>
</graph_prototypes>
</discovery_rule>
</discovery_rules>
<macros>
<macro>
<macro>{$SNMP_COMMUNITY}</macro>
<value>public</value>
</macro>
</macros>
</template>
</templates>
</zabbix_export>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-06-19T12:19:20Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template_Switch_Cisco</template>
<name>Template_Switch_Cisco</name>
<templates>
<template>
<name>Template_SNMP_Interfaces</name>
</template>
</templates>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>Hardware</name>
</application>
</applications>
<items>
<item>
<name>Hardware: Firmware version</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.9.9.25.1.1.1.2.5</snmp_oid>
<key>cisco.hw.firmware_version</key>
<delay>2h</delay>
<history>30d</history>
<trends>0</trends>
<value_type>CHAR</value_type>
<applications>
<application>
<name>Hardware</name>
</application>
</applications>
<preprocessing>
<step>
<type>REGEX</type>
<params>\$(.*)\$
\1</params>
</step>
</preprocessing>
<triggers>
<trigger>
<expression>{change()}=1</expression>
<name>Firmware version changed ({ITEM.LASTVALUE1})</name>
<priority>INFO</priority>
<manual_close>YES</manual_close>
</trigger>
</triggers>
</item>
</items>
</template>
</templates>
</zabbix_export>

View File

@ -0,0 +1,429 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-06-19T12:19:32Z</date>
<groups>
<group>
<name>Modèles</name>
</group>
</groups>
<templates>
<template>
<template>Template_Switch_Dell_PowerConnect</template>
<name>Template_Switch_Dell_PowerConnect</name>
<templates>
<template>
<name>Template_Switch_Generic</name>
</template>
</templates>
<groups>
<group>
<name>Modèles</name>
</group>
</groups>
<applications>
<application>
<name>Information(s)</name>
</application>
<application>
<name>Inventory</name>
</application>
<application>
<name>System</name>
</application>
</applications>
<items>
<item>
<name>Memory: Available</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.674.10895.5000.2.6132.1.1.1.1.4.2.0</snmp_oid>
<key>agentSwitchCpuProcessMemAvailable</key>
<delay>5m</delay>
<trends>1825d</trends>
<units>bytes</units>
<applications>
<application>
<name>System</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>1000</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
<item>
<name>Memory: Free</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.674.10895.5000.2.6132.1.1.1.1.4.1.0</snmp_oid>
<key>agentSwitchCpuProcessMemFree</key>
<delay>5m</delay>
<trends>1825d</trends>
<units>bytes</units>
<applications>
<application>
<name>System</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>1000</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
<item>
<name>CPU usage</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.674.10895.5000.2.6132.1.1.1.1.4.9.0</snmp_oid>
<key>agentSwitchCpuProcessTotalUtilization</key>
<delay>5m</delay>
<trends>1825d</trends>
<status>DISABLED</status>
<units>%</units>
<applications>
<application>
<name>System</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Model</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.674.10895.3000.1.2.100.1.0</snmp_oid>
<key>productIdentificationDisplayName</key>
<delay>2h</delay>
<history>30d</history>
<trends>0</trends>
<value_type>CHAR</value_type>
<inventory_link>TYPE</inventory_link>
<applications>
<application>
<name>Information(s)</name>
</application>
<application>
<name>Inventory</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Serial number</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.674.10895.3000.1.2.100.8.1.4.1</snmp_oid>
<key>productIdentificationServiceTag</key>
<delay>2h;50s/1-7,00:00-24:00</delay>
<history>30d</history>
<trends>0</trends>
<value_type>CHAR</value_type>
<inventory_link>SERIALNO_A</inventory_link>
<applications>
<application>
<name>Information(s)</name>
</application>
<application>
<name>Inventory</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Firmware version</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.674.10895.3000.1.2.100.4.0</snmp_oid>
<key>productIdentificationVersion</key>
<delay>2h</delay>
<history>30d</history>
<trends>0</trends>
<value_type>CHAR</value_type>
<inventory_link>OS</inventory_link>
<applications>
<application>
<name>Information(s)</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{diff(0)}&gt;0</expression>
<name>Software version was changed</name>
<priority>INFO</priority>
</trigger>
</triggers>
</item>
</items>
<discovery_rules>
<discovery_rule>
<name>Fan</name>
<type>SNMP_AGENT</type>
<snmp_oid>discovery[{#SNMPVALUE},.1.3.6.1.4.1.674.10895.3000.1.2.110.7.1.1.2]</snmp_oid>
<key>envMonFanStatusDescr</key>
<delay>2h</delay>
<lifetime>1w</lifetime>
<item_prototypes>
<item_prototype>
<name>État du ventilateur $1</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.674.10895.3000.1.2.110.7.1.1.3.{#SNMPINDEX}</snmp_oid>
<key>envMonFanState[{#SNMPVALUE}]</key>
<delay>5m</delay>
<history>180d</history>
<trends>1825d</trends>
<applications>
<application>
<name>System</name>
</application>
</applications>
<valuemap>
<name>dellEnvMonState</name>
</valuemap>
<request_method>POST</request_method>
<trigger_prototypes>
<trigger_prototype>
<expression>{diff(0)}=1</expression>
<name>L'état du ventilateur {#SNMPVALUE} a changé</name>
<priority>HIGH</priority>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
<item_prototype>
<name>$1</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.674.10895.3000.1.2.110.7.1.1.2.{#SNMPINDEX}</snmp_oid>
<key>envMonFanStatusDescr[{#SNMPVALUE}]</key>
<delay>2h</delay>
<history>180d</history>
<trends>0</trends>
<value_type>CHAR</value_type>
<applications>
<application>
<name>System</name>
</application>
</applications>
<request_method>POST</request_method>
</item_prototype>
</item_prototypes>
<request_method>POST</request_method>
</discovery_rule>
<discovery_rule>
<name>Power suplly discovery</name>
<type>SNMP_AGENT</type>
<snmp_oid>discovery[{#SNMPVALUE},.1.3.6.1.4.1.674.10895.3000.1.2.110.7.2.1.2]</snmp_oid>
<key>envMonSupplyStatusDescr</key>
<delay>2h</delay>
<lifetime>1w</lifetime>
<item_prototypes>
<item_prototype>
<name>$1 État de l'alimentation</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.674.10895.3000.1.2.110.7.2.1.3.{#SNMPINDEX}</snmp_oid>
<key>envMonSupplyState[{#SNMPVALUE}]</key>
<delay>5m</delay>
<trends>1825d</trends>
<applications>
<application>
<name>System</name>
</application>
</applications>
<valuemap>
<name>dellEnvMonState</name>
</valuemap>
<request_method>POST</request_method>
<trigger_prototypes>
<trigger_prototype>
<expression>{last(0)}&lt;&gt; 1 and {last(0)} &lt;&gt; 5</expression>
<name>Défaut de l'alimentation {#SNMPVALUE} (état {ITEM.VALUE1})</name>
<priority>WARNING</priority>
</trigger_prototype>
<trigger_prototype>
<expression>{diff(0)}=1</expression>
<name>L'état de l'alimentation {#SNMPVALUE} a changé</name>
<priority>HIGH</priority>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
<item_prototype>
<name>$1 power supply</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.674.10895.3000.1.2.110.7.2.1.2.{#SNMPINDEX}</snmp_oid>
<key>envMonSupplyStatusDescr[{#SNMPVALUE}]</key>
<delay>2h</delay>
<trends>0</trends>
<value_type>CHAR</value_type>
<applications>
<application>
<name>System</name>
</application>
</applications>
<request_method>POST</request_method>
</item_prototype>
</item_prototypes>
<request_method>POST</request_method>
</discovery_rule>
<discovery_rule>
<name>Hardware inventory</name>
<type>SNMP_AGENT</type>
<snmp_oid>discovery[{#SNMPVALUE},.1.3.6.1.4.1.674.10895.3000.1.2.100.8.1.1]</snmp_oid>
<key>productIdentificationPerUnitTable</key>
<delay>1h</delay>
<lifetime>1w</lifetime>
<item_prototypes>
<item_prototype>
<name>Asset tag of unit $1</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.674.10895.3000.1.2.100.8.1.3.{#SNMPINDEX}</snmp_oid>
<key>productIdentificationAssetTag[{#SNMPVALUE}]</key>
<delay>2h</delay>
<trends>0</trends>
<value_type>CHAR</value_type>
<applications>
<application>
<name>Inventory</name>
</application>
</applications>
<request_method>POST</request_method>
</item_prototype>
<item_prototype>
<name>Bootrom version of unit $1</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.674.10895.3000.1.2.100.8.1.6.{#SNMPINDEX}</snmp_oid>
<key>productIdentificationBootromVersion[{#SNMPVALUE}]</key>
<delay>2h</delay>
<trends>0</trends>
<value_type>CHAR</value_type>
<applications>
<application>
<name>Inventory</name>
</application>
</applications>
<request_method>POST</request_method>
<trigger_prototypes>
<trigger_prototype>
<expression>{diff(0)}&gt;0</expression>
<name>La version du bootrom de l'unité {#SNMPVALUE} a changé</name>
<priority>WARNING</priority>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
<item_prototype>
<name>Chassis service tag of unit $1</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.674.10895.3000.1.2.100.8.1.5.{#SNMPINDEX}</snmp_oid>
<key>productIdentificationChassisServiceTag[{#SNMPVALUE}]</key>
<delay>2h</delay>
<trends>0</trends>
<value_type>CHAR</value_type>
<applications>
<application>
<name>Inventory</name>
</application>
</applications>
<request_method>POST</request_method>
</item_prototype>
<item_prototype>
<name>Serial number of unit $1</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.674.10895.3000.1.2.100.8.1.2.{#SNMPINDEX}</snmp_oid>
<key>productIdentificationSerialNumber[{#SNMPVALUE}]</key>
<delay>2h</delay>
<trends>0</trends>
<value_type>CHAR</value_type>
<applications>
<application>
<name>Inventory</name>
</application>
</applications>
<request_method>POST</request_method>
<trigger_prototypes>
<trigger_prototype>
<expression>{diff(0)}&gt;0</expression>
<name>Le numéro de série de l'unité {#SNMPVALUE} a changé</name>
<priority>AVERAGE</priority>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
<item_prototype>
<name>Service tag of unit $1</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.674.10895.3000.1.2.100.8.1.4.{#SNMPINDEX}</snmp_oid>
<key>productIdentificationServiceTag[{#SNMPVALUE}]</key>
<delay>2h</delay>
<trends>0</trends>
<value_type>CHAR</value_type>
<applications>
<application>
<name>Inventory</name>
</application>
</applications>
<request_method>POST</request_method>
</item_prototype>
</item_prototypes>
<request_method>POST</request_method>
</discovery_rule>
</discovery_rules>
</template>
</templates>
<triggers>
<trigger>
<expression>({Template_Switch_Dell_PowerConnect:agentSwitchCpuProcessMemAvailable.last(0)}-{Template_Switch_Dell_PowerConnect:agentSwitchCpuProcessMemFree.last(0)})&gt;0.8*{Template_Switch_Dell_PowerConnect:agentSwitchCpuProcessMemAvailable.last(0)}</expression>
<name>Memory usage exceeded 80%</name>
<status>DISABLED</status>
<priority>HIGH</priority>
</trigger>
</triggers>
<graphs>
<graph>
<name>Memory usage</name>
<graph_items>
<graph_item>
<drawtype>BOLD_LINE</drawtype>
<color>EACC00</color>
<item>
<host>Template_Switch_Dell_PowerConnect</host>
<key>agentSwitchCpuProcessMemAvailable</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<drawtype>FILLED_REGION</drawtype>
<color>FF0000</color>
<item>
<host>Template_Switch_Dell_PowerConnect</host>
<key>agentSwitchCpuProcessMemFree</key>
</item>
</graph_item>
</graph_items>
</graph>
</graphs>
<value_maps>
<value_map>
<name>dellEnvMonState</name>
<mappings>
<mapping>
<value>1</value>
<newvalue>normal</newvalue>
</mapping>
<mapping>
<value>2</value>
<newvalue>warning</newvalue>
</mapping>
<mapping>
<value>3</value>
<newvalue>critical</newvalue>
</mapping>
<mapping>
<value>4</value>
<newvalue>notPresent</newvalue>
</mapping>
<mapping>
<value>5</value>
<newvalue>notFunctioning</newvalue>
</mapping>
</mappings>
</value_map>
</value_maps>
</zabbix_export>

View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-06-19T10:43:36Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Model_Switch_Generic</template>
<name>Model_Switch_Generic</name>
<templates>
<template>
<name>Template_SNMP_Interfaces</name>
</template>
</templates>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<items>
<item>
<name>IP Forwarding</name>
<type>SNMP_AGENT</type>
<snmp_oid>IP-MIB::ipForwarding.0</snmp_oid>
<key>ipForwarding</key>
<delay>30m</delay>
<history>30d</history>
<trends>0</trends>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{diff()}=1</expression>
<name>IP forwarding config changed</name>
<priority>WARNING</priority>
</trigger>
</triggers>
</item>
</items>
</template>
</templates>
</zabbix_export>

View File

@ -0,0 +1,145 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-06-19T12:19:47Z</date>
<groups>
<group>
<name>Modèles</name>
</group>
</groups>
<templates>
<template>
<template>Template_Switch_Netgear_Prosafe</template>
<name>Template_Switch_Netgear_Prosafe</name>
<templates>
<template>
<name>Template_Switch_Generic</name>
</template>
</templates>
<groups>
<group>
<name>Modèles</name>
</group>
</groups>
<discovery_rules>
<discovery_rule>
<name>Stack members</name>
<type>SNMP_AGENT</type>
<snmp_oid>discovery[{#UNIT_SERIAL},.1.3.6.1.2.1.47.1.1.1.1.11,{#STACK_POSITION},.1.3.6.1.2.1.47.1.1.1.1.6]</snmp_oid>
<key>stack.members.discovery</key>
<delay>30m</delay>
<filter>
<conditions>
<condition>
<macro>{#UNIT_SERIAL}</macro>
<value>^.+$</value>
<formulaid>A</formulaid>
</condition>
</conditions>
</filter>
<lifetime>1w</lifetime>
<item_prototypes>
<item_prototype>
<name>Model ($1)</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.2.1.47.1.1.1.1.2.{#SNMPINDEX}</snmp_oid>
<key>stack.member.model[{#SNMPINDEX}]</key>
<delay>2h</delay>
<history>30d</history>
<trends>0</trends>
<value_type>CHAR</value_type>
<request_method>POST</request_method>
</item_prototype>
<item_prototype>
<name>Stack position ($1)</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.2.1.47.1.1.1.1.6.{#SNMPINDEX}</snmp_oid>
<key>stack.member.position[{#SNMPINDEX}]</key>
<delay>2h</delay>
<history>30d</history>
<trends>0</trends>
<request_method>POST</request_method>
</item_prototype>
<item_prototype>
<name>Serial number ($1)</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.2.1.47.1.1.1.1.11.{#SNMPINDEX}</snmp_oid>
<key>stack.member.serial[{#SNMPINDEX}]</key>
<delay>30m</delay>
<history>30d</history>
<trends>0</trends>
<value_type>CHAR</value_type>
<request_method>POST</request_method>
<trigger_prototypes>
<trigger_prototype>
<expression>{nodata(7200)}=1</expression>
<name>No data received from {#STACK_POSITION}</name>
<priority>AVERAGE</priority>
</trigger_prototype>
<trigger_prototype>
<expression>{diff()}=1</expression>
<name>S/N changed on {#STACK_POSITION}</name>
<priority>WARNING</priority>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
<item_prototype>
<name>Bootrom version ($1)</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.2.1.47.1.1.1.1.9.{#SNMPINDEX}</snmp_oid>
<key>stack.member.version.boot[{#SNMPINDEX}]</key>
<delay>2h</delay>
<history>30d</history>
<trends>0</trends>
<value_type>CHAR</value_type>
<request_method>POST</request_method>
<trigger_prototypes>
<trigger_prototype>
<expression>{diff()}=1</expression>
<name>Bootrom version changed on {#STACK_POSITION}</name>
<priority>WARNING</priority>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
<item_prototype>
<name>Firmware version ($1)</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.2.1.47.1.1.1.1.10.{#SNMPINDEX}</snmp_oid>
<key>stack.member.version.fw[{#SNMPINDEX}]</key>
<delay>2h</delay>
<history>30d</history>
<trends>0</trends>
<value_type>CHAR</value_type>
<request_method>POST</request_method>
<trigger_prototypes>
<trigger_prototype>
<expression>{diff()}=1</expression>
<name>Firmware version changed on {#STACK_POSITION}</name>
<priority>WARNING</priority>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
<item_prototype>
<name>Hardware version ($1)</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.2.1.47.1.1.1.1.8.{#SNMPINDEX}</snmp_oid>
<key>stack.member.version.hw[{#SNMPINDEX}]</key>
<delay>2h</delay>
<history>30d</history>
<trends>0</trends>
<value_type>CHAR</value_type>
<request_method>POST</request_method>
</item_prototype>
</item_prototypes>
<request_method>POST</request_method>
</discovery_rule>
</discovery_rules>
<macros>
<macro>
<macro>{$SNMP_COMMUNITY}</macro>
<value>public</value>
</macro>
</macros>
</template>
</templates>
</zabbix_export>

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-06-19T12:19:59Z</date>
<groups>
<group>
<name>Modèles</name>
</group>
</groups>
<templates>
<template>
<template>Template_Switch_Unifi</template>
<name>Template_Switch_Unifi</name>
<templates>
<template>
<name>Template_Switch_Generic</name>
</template>
</templates>
<groups>
<group>
<name>Modèles</name>
</group>
</groups>
</template>
</templates>
</zabbix_export>

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-06-19T12:20:10Z</date>
<groups>
<group>
<name>Modèles</name>
</group>
</groups>
<templates>
<template>
<template>Template_Switch_Zyxel_GS</template>
<name>Template_Switch_Zyxel_GS</name>
<templates>
<template>
<name>Template_Switch_Generic</name>
</template>
</templates>
<groups>
<group>
<name>Modèles</name>
</group>
</groups>
</template>
</templates>
</zabbix_export>

View File

@ -0,0 +1,183 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-06-19T12:20:39Z</date>
<groups>
<group>
<name>Modèles</name>
</group>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template_UPS_APC_SNMP</template>
<name>Template_UPS_APC_SNMP</name>
<groups>
<group>
<name>Modèles</name>
</group>
<group>
<name>Templates</name>
</group>
</groups>
<items>
<item>
<name>Température de la batterie</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.318.1.1.1.2.2.2.0</snmp_oid>
<key>upsAdvBatteryTemperature</key>
<delay>5m</delay>
<history>30d</history>
<trends>1095d</trends>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{last(0)}&gt;40</expression>
<name>Température élevée</name>
<priority>HIGH</priority>
</trigger>
</triggers>
</item>
<item>
<name>Charge actuelle (ampères)</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.318.1.1.1.4.2.4.0</snmp_oid>
<key>upsAdvOutputCurrent</key>
<delay>5m</delay>
<history>30d</history>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<units>a</units>
<request_method>POST</request_method>
</item>
<item>
<name>Charge (%)</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.318.1.1.1.4.2.3.0</snmp_oid>
<key>upsAdvOutputLoad</key>
<delay>5m</delay>
<history>30d</history>
<trends>1095d</trends>
<value_type>FLOAT</value_type>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{last(0)}&gt;95</expression>
<name>APC: Output Load Too High - {HOSTNAME}</name>
<status>DISABLED</status>
<priority>DISASTER</priority>
</trigger>
<trigger>
<expression>{last(0)}&gt;90</expression>
<name>Onduleur en surcharge</name>
<priority>HIGH</priority>
</trigger>
</triggers>
</item>
<item>
<name>Témoin de remplacement de la batterie</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.318.1.1.1.2.2.4.0</snmp_oid>
<key>upsAdvReplaceBatteryIndicator</key>
<delay>10m</delay>
<history>30d</history>
<trends>1095d</trends>
<valuemap>
<name>APC Battery Replacement Status</name>
</valuemap>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{last(0)}&lt;&gt;1</expression>
<name>Batterie défectueuse</name>
<priority>DISASTER</priority>
</trigger>
</triggers>
</item>
<item>
<name>Temps restant</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.318.1.1.1.2.2.3.0</snmp_oid>
<key>upsAdvRunTimeRemaining</key>
<delay>3m</delay>
<history>30d</history>
<trends>1095d</trends>
<units>s</units>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>0.01</params>
</step>
</preprocessing>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{last(0)}&lt;5</expression>
<name>APC: Run Time Remaining Critical Level - {HOSTNAME}</name>
<status>DISABLED</status>
<priority>DISASTER</priority>
</trigger>
<trigger>
<expression>{last(0)}&lt;10</expression>
<name>Niveau d'énergie faible</name>
<priority>HIGH</priority>
</trigger>
</triggers>
</item>
<item>
<name>État de la batterie</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.318.1.1.1.2.1.1.0</snmp_oid>
<key>upsBasicBatteryStatus</key>
<delay>3m</delay>
<history>30d</history>
<trends>1095d</trends>
<valuemap>
<name>APC Battery Status</name>
</valuemap>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{last(0)}&lt;&gt;2</expression>
<name>Perte de l'alimentation</name>
<priority>DISASTER</priority>
</trigger>
</triggers>
</item>
<item>
<name>Durée sur batterie</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.318.1.1.1.2.1.2.0</snmp_oid>
<key>upsBasicBatteryTimeOnBattery</key>
<delay>3m</delay>
<history>30d</history>
<trends>1095d</trends>
<units>s</units>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>0.01</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
</items>
<macros>
<macro>
<macro>{$COMMUNITY}</macro>
<value>public</value>
</macro>
</macros>
</template>
</templates>
<value_maps>
<value_map>
<name>APC Battery Replacement Status</name>
</value_map>
<value_map>
<name>APC Battery Status</name>
</value_map>
</value_maps>
</zabbix_export>

View File

@ -0,0 +1,611 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-06-19T10:43:09Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template_UPS_CyberPower_SNMP</template>
<name>Template_UPS_CyberPower_SNMP</name>
<templates>
<template>
<name>Template_SNMP_Device</name>
</template>
</templates>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>Battery</name>
</application>
<application>
<name>Information</name>
</application>
<application>
<name>Input</name>
</application>
<application>
<name>Output</name>
</application>
<application>
<name>RMCARD</name>
</application>
</applications>
<items>
<item>
<name>Capacity</name>
<type>SNMP_AGENT</type>
<snmp_oid>1.3.6.1.4.1.3808.1.1.1.2.2.1.0</snmp_oid>
<key>battery.capacity</key>
<delay>120s</delay>
<history>30d</history>
<units>%</units>
<description>CPS-MIB::upsAdvanceBatteryCapacity - the battery capacity expressed in percentage</description>
<applications>
<application>
<name>Battery</name>
</application>
</applications>
<triggers>
<trigger>
<expression>{last()}&lt;10</expression>
<name>Battery charge is less than 10%</name>
<priority>HIGH</priority>
</trigger>
<trigger>
<expression>{last()}&lt;20</expression>
<name>Battery charge is less than 20%</name>
<priority>WARNING</priority>
<dependencies>
<dependency>
<name>Battery charge is less than 10%</name>
<expression>{Template_UPS_CyberPower_SNMP:battery.capacity.last()}&lt;10</expression>
</dependency>
</dependencies>
</trigger>
</triggers>
</item>
<item>
<name>Remaining Runtime</name>
<type>SNMP_AGENT</type>
<snmp_oid>1.3.6.1.4.1.3808.1.1.1.2.2.4.0</snmp_oid>
<key>battery.RemainingRuntime</key>
<delay>120s</delay>
<history>30d</history>
<value_type>FLOAT</value_type>
<units>min</units>
<description>CPS-MIB::upsAdvanceBatteryRunTimeRemaining - the UPS battery remaining run time</description>
<applications>
<application>
<name>Battery</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>0.00016666666666</params>
</step>
</preprocessing>
</item>
<item>
<name>Replace Indicator</name>
<type>SNMP_AGENT</type>
<snmp_oid>1.3.6.1.4.1.3808.1.1.1.2.2.5.0</snmp_oid>
<key>battery.ReplaceIndicator</key>
<delay>1h</delay>
<history>30d</history>
<trends>0</trends>
<description>CPS-MIB::upsAdvanceBatteryReplaceIndicator - this value indicates if UPS batteries need to be replaced</description>
<applications>
<application>
<name>Battery</name>
</application>
</applications>
<valuemap>
<name>CyberPower UPS Battery Replacement Indicator</name>
</valuemap>
<triggers>
<trigger>
<expression>{last()}&lt;&gt;1</expression>
<name>Battery should be replaced</name>
<priority>AVERAGE</priority>
</trigger>
</triggers>
</item>
<item>
<name>Battery status</name>
<type>SNMP_AGENT</type>
<snmp_oid>1.3.6.1.4.1.3808.1.1.1.2.1.1.0</snmp_oid>
<key>battery.Status</key>
<delay>120s</delay>
<history>30d</history>
<description>CPS-MIB::upsBaseBatteryStatus - the UPS battery status. A batteryLow(3) value means the battery will be exhausted soon under the current load. The amount of low battery run time can be configured by the upsAdvanceConfigLowBatteryRunTime.</description>
<applications>
<application>
<name>Battery</name>
</application>
</applications>
<valuemap>
<name>CyberPower UPS Battery Status</name>
</valuemap>
</item>
<item>
<name>Time on Battery</name>
<type>SNMP_AGENT</type>
<snmp_oid>1.3.6.1.4.1.3808.1.1.1.2.1.2.0</snmp_oid>
<key>battery.TimeOnBattery</key>
<delay>120s</delay>
<history>30d</history>
<value_type>FLOAT</value_type>
<units>min</units>
<description>CPS-MIB::upsBaseBatteryTimeOnBattery - the UPS wasted battery time since the UPS has transfered to backup mode</description>
<applications>
<application>
<name>Battery</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>0.00016666666666</params>
</step>
</preprocessing>
</item>
<item>
<name>Voltage Rating</name>
<type>SNMP_AGENT</type>
<snmp_oid>1.3.6.1.4.1.3808.1.1.1.2.2.8.0</snmp_oid>
<key>battery.VoltageRating</key>
<delay>1h</delay>
<history>30d</history>
<trends>0</trends>
<units>V</units>
<description>CPS-MIB::upsAdvanceBatteryVoltageRating - the DC voltage rating of the battery set</description>
<applications>
<application>
<name>Battery</name>
</application>
</applications>
</item>
<item>
<name>Last Fail Cause</name>
<type>SNMP_AGENT</type>
<snmp_oid>1.3.6.1.4.1.3808.1.1.1.3.2.5.0</snmp_oid>
<key>input.FailCause</key>
<delay>1h</delay>
<history>1w</history>
<trends>0</trends>
<description>CPS-MIB::upsAdvanceInputLineFailCause - The reason of UPS power failure. This value is set to: - noTransfer(1), if UPS is in utility mode. - highLineVoltage(2), if UPS switch to battery mode by reason of input voltage over the high transfer vloltage. - brownout(3), if UPS switch to battery mode by reason of input voltage under the low transfer vloltage. - selfTest(4), if the UPS was commanded to do a self test.</description>
<applications>
<application>
<name>Input</name>
</application>
</applications>
<valuemap>
<name>CyberPower UPS Input Fail Cause</name>
</valuemap>
</item>
<item>
<name>Input frequency</name>
<type>SNMP_AGENT</type>
<snmp_oid>1.3.6.1.4.1.3808.1.1.1.3.2.4.0</snmp_oid>
<key>input.Frequency</key>
<delay>120s</delay>
<history>30d</history>
<units>Hz</units>
<description>CPS-MIB::upsAdvanceInputFrequency - the input line frequency in 1/10 Hz</description>
<applications>
<application>
<name>Input</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>0.1</params>
</step>
</preprocessing>
</item>
<item>
<name>Input status</name>
<type>SNMP_AGENT</type>
<snmp_oid>1.3.6.1.4.1.3808.1.1.1.3.2.6.0</snmp_oid>
<key>input.Status</key>
<delay>60s</delay>
<history>30d</history>
<description>CPS-MIB::upsAdvanceInputStatus - display the present status of the utility power supplied to the UPS</description>
<applications>
<application>
<name>Input</name>
</application>
</applications>
<valuemap>
<name>CyberPower UPS Input Status</name>
</valuemap>
<triggers>
<trigger>
<expression>{last()}&lt;&gt;1</expression>
<name>Issue on power input</name>
<priority>WARNING</priority>
</trigger>
</triggers>
</item>
<item>
<name>Input voltage</name>
<type>SNMP_AGENT</type>
<snmp_oid>1.3.6.1.4.1.3808.1.1.1.3.2.1.0</snmp_oid>
<key>input.Voltage</key>
<delay>120s</delay>
<history>30d</history>
<units>V</units>
<description>CPS-MIB::upsAdvanceInputLineVoltage - the input line voltage in 1/10 VAC</description>
<applications>
<application>
<name>Input</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>0.1</params>
</step>
</preprocessing>
</item>
<item>
<name>Output frequency</name>
<type>SNMP_AGENT</type>
<snmp_oid>1.3.6.1.4.1.3808.1.1.1.4.2.2.0</snmp_oid>
<key>output.Frequency</key>
<delay>120s</delay>
<history>30d</history>
<units>Hz</units>
<description>CPS-MIB::upsAdvanceOutputFrequency - the UPS output frequency in 1/10 Hz</description>
<applications>
<application>
<name>Output</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>0.1</params>
</step>
</preprocessing>
</item>
<item>
<name>Load (%)</name>
<type>SNMP_AGENT</type>
<snmp_oid>1.3.6.1.4.1.3808.1.1.1.4.2.3.0</snmp_oid>
<key>output.Load</key>
<delay>120s</delay>
<history>30d</history>
<units>%</units>
<description>CPS-MIB::upsAdvanceOutputLoad - the UPS output load expressed in percentage</description>
<applications>
<application>
<name>Output</name>
</application>
</applications>
<triggers>
<trigger>
<expression>{last()}&gt;80</expression>
<name>High output power load</name>
<priority>WARNING</priority>
</trigger>
</triggers>
</item>
<item>
<name>Load (watts)</name>
<type>SNMP_AGENT</type>
<snmp_oid>1.3.6.1.4.1.3808.1.1.1.4.2.5.0</snmp_oid>
<key>output.LoadW</key>
<delay>120s</delay>
<history>30d</history>
<units>!W</units>
<description>CPS-MIB::upsAdvanceOutputPower - the total output active power of the UPS system in W</description>
<applications>
<application>
<name>Output</name>
</application>
</applications>
</item>
<item>
<name>Output status</name>
<type>SNMP_AGENT</type>
<snmp_oid>1.3.6.1.4.1.3808.1.1.1.4.1.1.0</snmp_oid>
<key>output.Status</key>
<delay>120s</delay>
<history>30d</history>
<description>CPS-MIB::upsBaseOutputStatus - the UPS output status</description>
<applications>
<application>
<name>Output</name>
</application>
</applications>
<valuemap>
<name>CyberPower UPS Output Status</name>
</valuemap>
<triggers>
<trigger>
<expression>{last()}=3</expression>
<name>UPS is on battery</name>
<priority>AVERAGE</priority>
</trigger>
</triggers>
</item>
<item>
<name>Output voltage</name>
<type>SNMP_AGENT</type>
<snmp_oid>1.3.6.1.4.1.3808.1.1.1.4.2.1.0</snmp_oid>
<key>output.Voltage</key>
<delay>120s</delay>
<history>30d</history>
<units>V</units>
<description>CPS-MIB::upsAdvanceOutputVoltage - the UPS output voltage in 1/10 VAC</description>
<applications>
<application>
<name>Output</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>0.1</params>
</step>
</preprocessing>
</item>
<item>
<name>Firmware Revision</name>
<type>SNMP_AGENT</type>
<snmp_oid>1.3.6.1.4.1.3808.1.1.1.1.2.4.0</snmp_oid>
<key>rmcard.FirmwareRevision</key>
<delay>1h</delay>
<history>1w</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<description>CPS-MIB::upsAdvanceIdentAgentFirmwareRevision - the SNMP agent firmware revision</description>
<applications>
<application>
<name>RMCARD</name>
</application>
</applications>
</item>
<item>
<name>Firmware Version</name>
<type>SNMP_AGENT</type>
<snmp_oid>1.3.6.1.4.1.3808.1.1.1.1.2.1.0</snmp_oid>
<key>ups.info.FirmwareVersion</key>
<delay>1h</delay>
<history>1w</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<description>CPS-MIB::upsAdvanceIdentFirmwareRevision - the UPS firmware revision</description>
<applications>
<application>
<name>Information</name>
</application>
</applications>
</item>
<item>
<name>Load Power</name>
<type>SNMP_AGENT</type>
<snmp_oid>1.3.6.1.4.1.3808.1.1.1.1.2.7.0</snmp_oid>
<key>ups.info.LoadPower</key>
<delay>1h</delay>
<history>1w</history>
<trends>0</trends>
<units>!W</units>
<description>CPS-MIB::upsAdvanceIdentLoadPower - the power rating(Watts) of the UPS</description>
<applications>
<application>
<name>Information</name>
</application>
</applications>
</item>
<item>
<name>Model</name>
<type>SNMP_AGENT</type>
<snmp_oid>1.3.6.1.4.1.3808.1.1.1.1.1.1.0</snmp_oid>
<key>ups.info.Model</key>
<delay>1h</delay>
<history>1w</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<description>CPS-MIB::upsBaseIdentModel - the UPS model name</description>
<inventory_link>MODEL</inventory_link>
<applications>
<application>
<name>Information</name>
</application>
</applications>
</item>
<item>
<name>Name</name>
<type>SNMP_AGENT</type>
<snmp_oid>1.3.6.1.4.1.3808.1.1.1.1.1.2.0</snmp_oid>
<key>ups.info.Name</key>
<delay>1h</delay>
<history>1w</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<description>CPS-MIB::upsBaseIdentName - the UPS identified name could be set by the administrator</description>
<inventory_link>NAME</inventory_link>
<applications>
<application>
<name>Information</name>
</application>
</applications>
</item>
<item>
<name>Power Rating</name>
<type>SNMP_AGENT</type>
<snmp_oid>1.3.6.1.4.1.3808.1.1.1.1.2.6.0</snmp_oid>
<key>ups.info.PowerRating</key>
<delay>1h</delay>
<history>1w</history>
<trends>0</trends>
<units>!VA</units>
<description>CPS-MIB::upsAdvanceIdentPowerRating - the Volt-Amp rating of the UPS</description>
<applications>
<application>
<name>Information</name>
</application>
</applications>
</item>
<item>
<name>Temperature</name>
<type>SNMP_AGENT</type>
<snmp_oid>1.3.6.1.4.1.3808.1.1.1.2.2.3.0</snmp_oid>
<key>ups.temperature</key>
<delay>120s</delay>
<history>30d</history>
<units>°C</units>
<applications>
<application>
<name>Information</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>0.1</params>
</step>
</preprocessing>
<triggers>
<trigger>
<expression>{last()}&gt;42</expression>
<recovery_mode>RECOVERY_EXPRESSION</recovery_mode>
<recovery_expression>{last()}&lt;40</recovery_expression>
<name>UPS temperature is {ITEM.LASTVALUE1}</name>
<priority>WARNING</priority>
</trigger>
</triggers>
</item>
</items>
<macros>
<macro>
<macro>{$SNMP_COMMUNITY}</macro>
<value>public</value>
</macro>
</macros>
</template>
</templates>
<value_maps>
<value_map>
<name>CyberPower UPS Battery Replacement Indicator</name>
<mappings>
<mapping>
<value>1</value>
<newvalue>noBatteryNeedsReplacing</newvalue>
</mapping>
<mapping>
<value>2</value>
<newvalue>batteryNeedsReplacing</newvalue>
</mapping>
</mappings>
</value_map>
<value_map>
<name>CyberPower UPS Battery Status</name>
<mappings>
<mapping>
<value>1</value>
<newvalue>unknown</newvalue>
</mapping>
<mapping>
<value>2</value>
<newvalue>batteryNormal</newvalue>
</mapping>
<mapping>
<value>3</value>
<newvalue>batteryLow</newvalue>
</mapping>
</mappings>
</value_map>
<value_map>
<name>CyberPower UPS Input Fail Cause</name>
<mappings>
<mapping>
<value>1</value>
<newvalue>noTransfer</newvalue>
</mapping>
<mapping>
<value>2</value>
<newvalue>highLineVoltage</newvalue>
</mapping>
<mapping>
<value>3</value>
<newvalue>brownout</newvalue>
</mapping>
<mapping>
<value>4</value>
<newvalue>selfTest</newvalue>
</mapping>
</mappings>
</value_map>
<value_map>
<name>CyberPower UPS Input Status</name>
<mappings>
<mapping>
<value>1</value>
<newvalue>normal</newvalue>
</mapping>
<mapping>
<value>2</value>
<newvalue>overVoltage</newvalue>
</mapping>
<mapping>
<value>3</value>
<newvalue>underVoltage</newvalue>
</mapping>
<mapping>
<value>4</value>
<newvalue>frequencyFailure</newvalue>
</mapping>
<mapping>
<value>5</value>
<newvalue>blackout</newvalue>
</mapping>
</mappings>
</value_map>
<value_map>
<name>CyberPower UPS Output Status</name>
<mappings>
<mapping>
<value>1</value>
<newvalue>unknown</newvalue>
</mapping>
<mapping>
<value>2</value>
<newvalue>onLine</newvalue>
</mapping>
<mapping>
<value>3</value>
<newvalue>onBattery</newvalue>
</mapping>
<mapping>
<value>4</value>
<newvalue>onBoost</newvalue>
</mapping>
<mapping>
<value>5</value>
<newvalue>onSleep</newvalue>
</mapping>
<mapping>
<value>6</value>
<newvalue>off</newvalue>
</mapping>
<mapping>
<value>7</value>
<newvalue>rebooting</newvalue>
</mapping>
</mappings>
</value_map>
</value_maps>
</zabbix_export>

View File

@ -0,0 +1,378 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-06-19T10:42:56Z</date>
<groups>
<group>
<name>Modèles</name>
</group>
</groups>
<templates>
<template>
<template>Template_UPS_Eaton_SNMP</template>
<name>Template_UPS_Eaton_SNMP</name>
<templates>
<template>
<name>Template_SNMP_Device</name>
</template>
</templates>
<groups>
<group>
<name>Modèles</name>
</group>
</groups>
<applications>
<application>
<name>Batterie</name>
</application>
<application>
<name>Entrée</name>
</application>
<application>
<name>Informations carte</name>
</application>
<application>
<name>Informations onduleur</name>
</application>
<application>
<name>Sortie</name>
</application>
</applications>
<items>
<item>
<name>Emplacement onduleur</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.2.1.1.6.0</snmp_oid>
<key>emplacement.onduleur</key>
<delay>1h</delay>
<history>180d</history>
<trends>0</trends>
<value_type>CHAR</value_type>
<inventory_link>LOCATION</inventory_link>
<applications>
<application>
<name>Informations onduleur</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Capacité batterie restante</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.534.1.2.4.0</snmp_oid>
<key>ups.battery.remaining</key>
<history>180d</history>
<trends>1825d</trends>
<units>%</units>
<applications>
<application>
<name>Batterie</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{last()}&lt;10</expression>
<name>Charge batterie &lt; 10%</name>
<priority>DISASTER</priority>
</trigger>
<trigger>
<expression>{last()}&lt;20</expression>
<name>Charge batterie &lt; 20%</name>
<priority>HIGH</priority>
<dependencies>
<dependency>
<name>Charge batterie &lt; 10%</name>
<expression>{Template_UPS_Eaton_SNMP:ups.battery.remaining.last()}&lt;10</expression>
</dependency>
</dependencies>
</trigger>
</triggers>
</item>
<item>
<name>Fréquence en entrée</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.534.1.3.1.0</snmp_oid>
<key>ups.freq.in</key>
<history>180d</history>
<trends>1825d</trends>
<units>Hz</units>
<applications>
<application>
<name>Entrée</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>0.1</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
<item>
<name>Fréquence en sortie</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.534.1.4.2.0</snmp_oid>
<key>ups.freq.out</key>
<history>180d</history>
<trends>1825d</trends>
<units>Hz</units>
<applications>
<application>
<name>Sortie</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>0.1</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
<item>
<name>Version firmware</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.534.1.1.3.0</snmp_oid>
<key>ups.fw.version</key>
<delay>1h</delay>
<history>180d</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<inventory_link>SOFTWARE</inventory_link>
<applications>
<application>
<name>Informations onduleur</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Charge de l'onduleur</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.534.1.4.1.0</snmp_oid>
<key>ups.load</key>
<delay>2m</delay>
<history>180d</history>
<trends>1825d</trends>
<units>%</units>
<applications>
<application>
<name>Sortie</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{last()}&gt;80</expression>
<name>L'onduleur est en surcharge</name>
<priority>AVERAGE</priority>
</trigger>
</triggers>
</item>
<item>
<name>Modèle</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.534.1.1.2.0</snmp_oid>
<key>ups.model</key>
<delay>2h</delay>
<history>180d</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<inventory_link>MODEL</inventory_link>
<applications>
<application>
<name>Informations onduleur</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Adresse IP</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.705.1.12.1.0</snmp_oid>
<key>ups.nic.ip</key>
<delay>2h</delay>
<history>180d</history>
<trends>0</trends>
<value_type>CHAR</value_type>
<inventory_link>OOB_IP</inventory_link>
<applications>
<application>
<name>Informations carte</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Adresse MAC</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.2.1.2.2.1.6.2</snmp_oid>
<key>ups.nic.mac</key>
<delay>2h</delay>
<history>180d</history>
<trends>0</trends>
<value_type>CHAR</value_type>
<inventory_link>MACADDRESS_A</inventory_link>
<applications>
<application>
<name>Informations carte</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Numéro série</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.705.1.1.7.0</snmp_oid>
<key>ups.serial</key>
<delay>1h</delay>
<history>180d</history>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>Informations onduleur</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>État de l'onduleur</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.534.1.2.5.0</snmp_oid>
<key>ups.status</key>
<history>180d</history>
<trends>1825d</trends>
<applications>
<application>
<name>Entrée</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{last()}=2</expression>
<name>L'onduleur est sur batterie</name>
<priority>DISASTER</priority>
</trigger>
</triggers>
</item>
<item>
<name>Autonomie restante</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.534.1.2.1.0</snmp_oid>
<key>ups.time.remaining</key>
<history>180d</history>
<trends>1825d</trends>
<units>s</units>
<applications>
<application>
<name>Batterie</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Voltage en entrée</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.534.1.3.4.1.2.1</snmp_oid>
<key>ups.voltage.in</key>
<history>180d</history>
<trends>1825d</trends>
<units>V</units>
<applications>
<application>
<name>Entrée</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Voltage en sortie</name>
<type>SNMP_AGENT</type>
<snmp_oid>.1.3.6.1.4.1.705.1.7.2.1.2.1</snmp_oid>
<key>ups.voltage.out</key>
<history>180d</history>
<trends>1825d</trends>
<units>V</units>
<applications>
<application>
<name>Sortie</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>0.1</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item>
</items>
</template>
</templates>
<graphs>
<graph>
<name>Alimentation</name>
<graph_items>
<graph_item>
<drawtype>BOLD_LINE</drawtype>
<color>C80000</color>
<item>
<host>Template_UPS_Eaton_SNMP</host>
<key>ups.freq.in</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<drawtype>GRADIENT_LINE</drawtype>
<color>00C800</color>
<yaxisside>RIGHT</yaxisside>
<item>
<host>Template_UPS_Eaton_SNMP</host>
<key>ups.voltage.in</key>
</item>
</graph_item>
</graph_items>
</graph>
<graph>
<name>Capacité batterie</name>
<ymin_type_1>FIXED</ymin_type_1>
<ymax_type_1>FIXED</ymax_type_1>
<graph_items>
<graph_item>
<color>00C800</color>
<item>
<host>Template_UPS_Eaton_SNMP</host>
<key>ups.battery.remaining</key>
</item>
</graph_item>
</graph_items>
</graph>
<graph>
<name>Sortie</name>
<graph_items>
<graph_item>
<drawtype>BOLD_LINE</drawtype>
<color>C80000</color>
<item>
<host>Template_UPS_Eaton_SNMP</host>
<key>ups.freq.out</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<drawtype>GRADIENT_LINE</drawtype>
<color>00C800</color>
<yaxisside>RIGHT</yaxisside>
<item>
<host>Template_UPS_Eaton_SNMP</host>
<key>ups.voltage.out</key>
</item>
</graph_item>
</graph_items>
</graph>
</graphs>
</zabbix_export>