Compare commits
29 Commits
Author | SHA1 | Date | |
---|---|---|---|
1d982b26d2 | |||
81b295f4a3 | |||
71e652c94f | |||
3259126b5f | |||
6f4dc0fead | |||
b4c2718f5b | |||
bd89975596 | |||
3de70efa44 | |||
864d4385c3 | |||
5f64422efd | |||
26f3a29a61 | |||
04fc38f69a | |||
046fc6daa6 | |||
a1f6fa71a8 | |||
bc40534bce | |||
d5329a3919 | |||
7f0033742c | |||
55b487627b | |||
44865c93ba | |||
838e80fa22 | |||
cfbcdb0869 | |||
c1bce8a41c | |||
77975aadbc | |||
e820f6174d | |||
1b97010de8 | |||
a13fe545a1 | |||
6519037034 | |||
7be58113d8 | |||
90166ba51f |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
temp
|
41
build.sh
Executable file
41
build.sh
Executable file
@ -0,0 +1,41 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
VERSION=`xpath -q -e 'string(//PLUGIN/@version)' zabbix_agent.plg`
|
||||||
|
FILE="zabbix_agent-$VERSION-x86_64-1.txz"
|
||||||
|
echo "Version in plugin file: $VERSION"
|
||||||
|
echo "Generated file will be: $FILE"
|
||||||
|
|
||||||
|
if [ -e "$FILE" ]; then
|
||||||
|
echo
|
||||||
|
echo "File already exists."
|
||||||
|
|
||||||
|
givenMD5=`xpath -q -e 'string(//PLUGIN/@packageMD5)' zabbix_agent.plg`
|
||||||
|
read currentMD5 _ < <(md5sum "$FILE")
|
||||||
|
|
||||||
|
if [ "$givenMD5" = "$currentMD5" ]; then
|
||||||
|
echo "MD5 value is OK."
|
||||||
|
else
|
||||||
|
echo "MD5 value does not match!"
|
||||||
|
echo "unraid_zabbix.plg: $givenMD5"
|
||||||
|
echo "$FILE: $currentMD5"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
|
||||||
|
if [ "$1" != "--force" ]; then
|
||||||
|
echo "Stopping now. Call '$0 --force' to force recreating the file."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Is this correct? If yes, press Enter. If not, press Ctrl-C."
|
||||||
|
read
|
||||||
|
|
||||||
|
echo "Creating $FILE..."
|
||||||
|
echo
|
||||||
|
tar -cv --owner=root --group=root --lzma -C files -f "$FILE" .
|
||||||
|
echo
|
||||||
|
read md5 _ < <(md5sum "$FILE")
|
||||||
|
echo "MD5 of the resulting file for the plugin file: $md5"
|
||||||
|
echo "Run this tool again to validate the MD5 value from the plugin file."
|
||||||
|
echo
|
||||||
|
echo "Please remember to fill the changelog in zabbix_agent.plg."
|
35
files/boot/config/plugins/zabbix_agent/zabbix_agentd.conf
Normal file
35
files/boot/config/plugins/zabbix_agent/zabbix_agentd.conf
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
Server=0.0.0.0/0
|
||||||
|
LogType=system
|
||||||
|
AllowRoot=1
|
||||||
|
StartAgents=1
|
||||||
|
|
||||||
|
DenyKey=system.run[*]
|
||||||
|
AllowKey=agent.*
|
||||||
|
AllowKey=net.if.*
|
||||||
|
AllowKey=net.if.*[*]
|
||||||
|
AllowKey=proc.*
|
||||||
|
AllowKey=proc.*[*]
|
||||||
|
AllowKey=sensor[*]
|
||||||
|
AllowKey=system.*
|
||||||
|
AllowKey=system.*[*]
|
||||||
|
AllowKey=vfs.dev.*
|
||||||
|
AllowKey=vfs.dev.*[*]
|
||||||
|
AllowKey=vfs.fs.*
|
||||||
|
AllowKey=vfs.fs.*[*]
|
||||||
|
AllowKey=vm.memory.size[*]
|
||||||
|
AllowKey=unraid.*
|
||||||
|
AllowKey=unraid.*[*]
|
||||||
|
AllowKey=custom.*
|
||||||
|
AllowKey=custom.*[*]
|
||||||
|
|
||||||
|
DenyKey=*
|
||||||
|
|
||||||
|
UserParameter=unraid.disks.discovery,/usr/local/emhttp/plugins/zabbix_agent/scripts/disks.discovery.sh
|
||||||
|
UserParameter=unraid.disk[*],/usr/local/emhttp/plugins/zabbix_agent/scripts/disk.sh "$1"
|
||||||
|
UserParameter=unraid.disks.totals,/usr/local/emhttp/plugins/zabbix_agent/scripts/disks.totals.sh
|
||||||
|
UserParameter=unraid.qemu.discovery,/usr/local/emhttp/plugins/zabbix_agent/scripts/qemu.discovery.sh
|
||||||
|
UserParameter=unraid.qemu[*],/usr/local/emhttp/plugins/zabbix_agent/scripts/qemu.sh "$1"
|
||||||
|
UserParameter=unraid.temperatures,/usr/local/emhttp/plugins/zabbix_agent/scripts/temperatures.sh
|
||||||
|
UserParameter=unraid.ups,/usr/local/emhttp/plugins/zabbix_agent/scripts/ups.sh
|
||||||
|
|
||||||
|
Include=/boot/config/plugins/zabbix_agent/*.custom.conf
|
48
files/etc/rc.d/rc.zabbix_agentd
Executable file
48
files/etc/rc.d/rc.zabbix_agentd
Executable file
@ -0,0 +1,48 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# rc.zabbix_agentd This shell script takes care of starting and stopping
|
||||||
|
# the Zabbix agent
|
||||||
|
|
||||||
|
OPTIONS="-c /boot/config/plugins/zabbix_agent/zabbix_agentd.conf"
|
||||||
|
|
||||||
|
start() {
|
||||||
|
if [ -x /usr/sbin/zabbix_agentd ]; then
|
||||||
|
echo -n "Starting zabbix_agentd: "
|
||||||
|
/usr/sbin/zabbix_agentd $OPTIONS
|
||||||
|
echo " /usr/sbin/zabbix_agentd $OPTIONS"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
stop() {
|
||||||
|
# Stop daemons.
|
||||||
|
COUNT=0
|
||||||
|
echo -n "Shutting down zabbix_agentd: "
|
||||||
|
while `killall zabbix_agentd 2>/dev/null`; do
|
||||||
|
echo -n "."
|
||||||
|
sleep 1
|
||||||
|
COUNT=$((COUNT+1))
|
||||||
|
if [ $COUNT -ge 30 ]; then
|
||||||
|
killall -9 zabbix_agentd
|
||||||
|
sleep 1
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo " DONE"
|
||||||
|
}
|
||||||
|
|
||||||
|
# See how we were called.
|
||||||
|
case "$1" in
|
||||||
|
start)
|
||||||
|
start
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
stop
|
||||||
|
;;
|
||||||
|
restart|reload)
|
||||||
|
stop
|
||||||
|
start
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo $"Usage: $0 {start|stop|restart}"
|
||||||
|
;;
|
||||||
|
esac
|
19
files/install/slack-desc
Normal file
19
files/install/slack-desc
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# HOW TO EDIT THIS FILE:
|
||||||
|
# The "handy ruler" below makes it easier to edit a package description. Line
|
||||||
|
# up the first '|' above the ':' following the base package name, and the '|'
|
||||||
|
# on the right side marks the last column you can put a character in. You must
|
||||||
|
# make exactly 11 lines for the formatting to be correct. It's also
|
||||||
|
# customary to leave one space after the ':' except on otherwise blank lines.
|
||||||
|
|
||||||
|
|-----handy-ruler------------------------------------------------------|
|
||||||
|
zabbix_agent: zabbix_agent plugin for UnRAID
|
||||||
|
zabbix_agent:
|
||||||
|
zabbix_agent: zabbix_agent is a open-sorce software that can be queried by a central
|
||||||
|
zabbix_agent: Zabbix server in order to gather metrics and send notifications via
|
||||||
|
zabbix_agent: triggers.
|
||||||
|
zabbix_agent:
|
||||||
|
zabbix_agent:
|
||||||
|
zabbix_agent:
|
||||||
|
zabbix_agent:
|
||||||
|
zabbix_agent:
|
||||||
|
zabbix_agent:
|
5
files/usr/local/emhttp/plugins/zabbix_agent/README.md
Normal file
5
files/usr/local/emhttp/plugins/zabbix_agent/README.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
**zabbix_agent**
|
||||||
|
|
||||||
|
This plugin installs and configures zabbix_agentd which can be used to monitor this Unraid server using a central Zabbix server.
|
||||||
|
|
||||||
|
You can download a matching zabbix template at https://git.schle.nz/fabian/unraid-zabbix_agent/raw/branch/main/zabbix_template.xml
|
Binary file not shown.
After Width: | Height: | Size: 441 B |
65
files/usr/local/emhttp/plugins/zabbix_agent/scripts/disk.sh
Executable file
65
files/usr/local/emhttp/plugins/zabbix_agent/scripts/disk.sh
Executable file
@ -0,0 +1,65 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
id="$1"
|
||||||
|
found=0
|
||||||
|
device=""
|
||||||
|
|
||||||
|
while read line; do
|
||||||
|
if [[ $line == "["* ]]; then
|
||||||
|
if [ $found = 1 ]; then
|
||||||
|
[ $fsFree -ge 0 ] && [ $fsSize -ge 0 ] && fsUsed=$(( $fsSize - $fsFree ))
|
||||||
|
echo -n '{"device":"'$device'", "name":"'$name'", "status":"'$status'", "temp":'$temp', "size":'$size', "num_reads":'$num_reads', '
|
||||||
|
echo -n '"num_writes":'$num_writes', "num_errors":'$num_errors', "type":"'$type'", "fs_size":'$fsSize', "fs_free":'$fsFree', "fs_used":'$fsUsed', "running":'$running', '
|
||||||
|
break
|
||||||
|
else
|
||||||
|
device=''
|
||||||
|
name=''
|
||||||
|
status=''
|
||||||
|
temp=-1
|
||||||
|
size=-1
|
||||||
|
num_reads=-1
|
||||||
|
num_writes=-1
|
||||||
|
num_errors=-1
|
||||||
|
type=""
|
||||||
|
fsSize=-1
|
||||||
|
fsFree=-1
|
||||||
|
fsUsed=-1
|
||||||
|
running=-1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
while IFS="=" read key value; do
|
||||||
|
value="${value%\"}"
|
||||||
|
value="${value#\"}"
|
||||||
|
[ $key = "id" ] && [ "$value" = "$id" ] && found=1
|
||||||
|
[ $key = "device" ] && device="$value"
|
||||||
|
[ $key = "name" ] && name="$value"
|
||||||
|
[ $key = "status" ] && status="$value"
|
||||||
|
[ $key = "temp" ] && [ "$value" != "*" ] && temp="$value"
|
||||||
|
[ $key = "size" ] && size=$(( $value * 1024 ))
|
||||||
|
[ $key = "numReads" ] && num_reads="$value"
|
||||||
|
[ $key = "numWrites" ] && num_writes="$value"
|
||||||
|
[ $key = "numErrors" ] && num_errors="$value"
|
||||||
|
[ $key = "type" ] && type="$value"
|
||||||
|
[ $key = "fsSize" ] && fsSize=$(( $value * 1024 ))
|
||||||
|
[ $key = "fsFree" ] && fsFree=$(( $value * 1024 ))
|
||||||
|
if [ $key = "color" ]; then
|
||||||
|
case "$value" in
|
||||||
|
green-on) running=1;;
|
||||||
|
green-blink) running=0;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
done <<< "$line"
|
||||||
|
fi
|
||||||
|
done < <(cat /var/local/emhttp/disks.ini ; echo "[empty]")
|
||||||
|
|
||||||
|
if [ $found = 0 ]; then
|
||||||
|
echo "UNSUPPORTED"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -e /var/local/emhttp/diskload.ini ]; then
|
||||||
|
read bytes_read bytes_written _ < <(grep $device"=" /var/local/emhttp/diskload.ini | cut -d"=" -f2)
|
||||||
|
echo '"bytes_reading":'$bytes_read', "bytes_writing":'$bytes_written'}'
|
||||||
|
else
|
||||||
|
echo '"diskload_missing":1}'
|
||||||
|
fi
|
16
files/usr/local/emhttp/plugins/zabbix_agent/scripts/disks.discovery.sh
Executable file
16
files/usr/local/emhttp/plugins/zabbix_agent/scripts/disks.discovery.sh
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
id='""'
|
||||||
|
device='""'
|
||||||
|
first=1
|
||||||
|
|
||||||
|
echo -n '['
|
||||||
|
|
||||||
|
while IFS="=" read key value; do
|
||||||
|
if [ "$key" = "id" ] && [ -n "$value" ] && [ "$value" != '""' ]; then
|
||||||
|
[ $first = 0 ] && echo -n ","
|
||||||
|
first=0
|
||||||
|
echo -n '{"{#ID}":'$value'}'
|
||||||
|
fi
|
||||||
|
done < /var/local/emhttp/disks.ini
|
||||||
|
|
||||||
|
echo ']'
|
38
files/usr/local/emhttp/plugins/zabbix_agent/scripts/disks.totals.sh
Executable file
38
files/usr/local/emhttp/plugins/zabbix_agent/scripts/disks.totals.sh
Executable file
@ -0,0 +1,38 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
id="$1"
|
||||||
|
found=0
|
||||||
|
device=""
|
||||||
|
|
||||||
|
data_size=0
|
||||||
|
data_free=0
|
||||||
|
data_used=0
|
||||||
|
|
||||||
|
cache_size=0
|
||||||
|
cache_free=0
|
||||||
|
cache_used=0
|
||||||
|
|
||||||
|
while read line; do
|
||||||
|
if [[ $line == "["* ]]; then
|
||||||
|
if [ "$type" = "Cache" ]; then
|
||||||
|
cache_size=$(( $cache_size + $size ))
|
||||||
|
cache_free=$(( $cache_free + $free ))
|
||||||
|
elif [ "$type" = "Data" ]; then
|
||||||
|
data_size=$(( $data_size + $size ))
|
||||||
|
data_free=$(( $data_free + $free ))
|
||||||
|
fi
|
||||||
|
type=""
|
||||||
|
size=0
|
||||||
|
free=0
|
||||||
|
else
|
||||||
|
IFS="=" read key value <<< "$line"
|
||||||
|
value="${value%\"}"
|
||||||
|
value="${value#\"}"
|
||||||
|
[ $key = "type" ] && type="$value"
|
||||||
|
[ $key = "fsSize" ] && size=$(( $value * 1024 ))
|
||||||
|
[ $key = "fsFree" ] && free=$(( $value * 1024 ))
|
||||||
|
fi
|
||||||
|
done < <(cat /var/local/emhttp/disks.ini ; echo "[empty]")
|
||||||
|
|
||||||
|
echo -n '{"data": {"size":'$data_size ', "free":'$data_free ', "used":'$(( $data_size - $data_free ))'},'
|
||||||
|
echo ' "cache":{"size":'$cache_size', "free":'$cache_free', "used":'$(( $cache_size - $cache_free ))'}}'
|
11
files/usr/local/emhttp/plugins/zabbix_agent/scripts/qemu.discovery.sh
Executable file
11
files/usr/local/emhttp/plugins/zabbix_agent/scripts/qemu.discovery.sh
Executable file
@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
first=1
|
||||||
|
|
||||||
|
echo -n "["
|
||||||
|
while read name; do
|
||||||
|
[ "$name" = "" ] && continue
|
||||||
|
[ $first = 0 ] && echo -n ","
|
||||||
|
first=0
|
||||||
|
echo -n '{"{#VM}":"'$name'"}'
|
||||||
|
done < <(virsh list --name --all)
|
||||||
|
echo "]"
|
25
files/usr/local/emhttp/plugins/zabbix_agent/scripts/qemu.sh
Executable file
25
files/usr/local/emhttp/plugins/zabbix_agent/scripts/qemu.sh
Executable file
@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
VM="$1"
|
||||||
|
|
||||||
|
echo -n '{'
|
||||||
|
state=`virsh domstate "$VM"`
|
||||||
|
echo -n '"state":"'$state'"'
|
||||||
|
if [ "$state" != "running" ]; then
|
||||||
|
echo -n '}'
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
while IFS=":" read key value; do
|
||||||
|
[ "$key" = "CPU(s)" ] && echo -n ', "cpus":'$value
|
||||||
|
[ "$key" = "CPU time" ] && echo -n ', "cpu_time":'${value%s}
|
||||||
|
[ "$key" = "Max memory" ] && echo -n ', "memory_max":'$((${value%KiB} * 1024))
|
||||||
|
[ "$key" = "Used memory" ] && echo -n ', "memory_used":'$((${value%KiB} * 1024))
|
||||||
|
done < <(virsh dominfo "$VM")
|
||||||
|
|
||||||
|
read interface _ < <(virsh domiflist "$VM" | head -n3 | tail -n1)
|
||||||
|
while read if key value; do
|
||||||
|
[ "$key" = "rx_bytes" ] && echo -n ', "network_bytes_in":'$value
|
||||||
|
[ "$key" = "tx_bytes" ] && echo -n ', "network_bytes_out":'$value
|
||||||
|
done < <(virsh domifstat "$VM" "$interface")
|
||||||
|
|
||||||
|
echo "}"
|
37
files/usr/local/emhttp/plugins/zabbix_agent/scripts/temperatures.sh
Executable file
37
files/usr/local/emhttp/plugins/zabbix_agent/scripts/temperatures.sh
Executable file
@ -0,0 +1,37 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
result=$( sensors )
|
||||||
|
error="$?"
|
||||||
|
if [ "$error" -gt 0 ]; then
|
||||||
|
echo '{"error": "sensors is not installed"}'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -n "{"
|
||||||
|
|
||||||
|
# CPU temp
|
||||||
|
line=$( grep 'CPU Temp:' <<< "$result" )
|
||||||
|
error="$?"
|
||||||
|
echo -n '"cpu": '
|
||||||
|
if [ "$error" -eq 0 ]; then
|
||||||
|
read _ _ temp _ <<< "$line"
|
||||||
|
temp="${temp#+}"
|
||||||
|
temp="${temp%°C}"
|
||||||
|
echo -n "$temp"
|
||||||
|
else
|
||||||
|
echo -n "null"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# MB
|
||||||
|
line=$(grep 'MB Temp:' <<< "$result" )
|
||||||
|
error="$?"
|
||||||
|
echo -n ', "mainboard": '
|
||||||
|
if [ "$error" -eq 0 ]; then
|
||||||
|
read _ _ temp _ <<< "$line"
|
||||||
|
temp="${temp#+}"
|
||||||
|
temp="${temp%°C}"
|
||||||
|
echo -n "$temp"
|
||||||
|
else
|
||||||
|
echo -n "null"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "}"
|
15
files/usr/local/emhttp/plugins/zabbix_agent/scripts/ups.sh
Executable file
15
files/usr/local/emhttp/plugins/zabbix_agent/scripts/ups.sh
Executable file
@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo -n '{"connected":true'
|
||||||
|
apcaccess | while read key _ value unit _; do
|
||||||
|
#echo $key - $value - $unit
|
||||||
|
case "$key" in
|
||||||
|
"STATUS") echo -n ", \"status\":\"$value\"" ;;
|
||||||
|
"LOADPCT") echo -n ", \"loadpct\":$value" ;;
|
||||||
|
"BCHARGE") echo -n ", \"bcharge\":$value" ;;
|
||||||
|
"TIMELEFT") echo -n ", \"timeleft\":$value" ;;
|
||||||
|
"BATTV") echo -n ", \"battv\":$value" ;;
|
||||||
|
"LINEV") echo -n ", \"linev\":$value" ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
echo "}"
|
Binary file not shown.
BIN
zabbix_agent-2024.12.19.1-x86_64-1.txz
Normal file
BIN
zabbix_agent-2024.12.19.1-x86_64-1.txz
Normal file
Binary file not shown.
102
zabbix_agent.plg
Normal file
102
zabbix_agent.plg
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
<?xml version='1.0' standalone='yes'?>
|
||||||
|
|
||||||
|
<!DOCTYPE PLUGIN [
|
||||||
|
<!ENTITY name "zabbix_agent">
|
||||||
|
<!ENTITY author "fabianonline">
|
||||||
|
<!ENTITY plgauthor "fabianonline">
|
||||||
|
<!ENTITY baseURL "https://git.schle.nz/fabian/unraid-zabbix_agent/raw/branch/stable">
|
||||||
|
<!ENTITY pluginURL "&baseURL;/zabbix_agent.plg">
|
||||||
|
<!ENTITY version "2024.12.19.1">
|
||||||
|
<!ENTITY packageName "zabbix_agent-&version;-x86_64-1.txz">
|
||||||
|
<!ENTITY packageURL "&baseURL;/&packageName;">
|
||||||
|
<!ENTITY packageMD5 "6e3a4e4b7712ec531a6da1ff946cf0a2">
|
||||||
|
]>
|
||||||
|
|
||||||
|
<PLUGIN name="&name;" author="&author;" version="&version;" pluginURL="&pluginURL;" packageMD5="&packageMD5;">
|
||||||
|
|
||||||
|
<CHANGES>
|
||||||
|
## &name;
|
||||||
|
|
||||||
|
### 2024.12.19.1
|
||||||
|
- Sometimes, diskload.ini is not available (at least in Unraid 6.12.6). In that case we now skip omitting disk load data
|
||||||
|
in order to still omit valid JSON.
|
||||||
|
|
||||||
|
### 2020.11.25.1
|
||||||
|
- You can now add a custom zabbix agent configuration file at /boot/config/plugins/zabbix_agent/zabbix_agentd.custom.conf.
|
||||||
|
It won't be overwritten by a future update of this plugin. Please note that the list of usable keys is heavily restricted
|
||||||
|
in zabbix_agentd.conf. To have your custom UserParameters accessible, you can either:
|
||||||
|
- Name them custom.$whatever.
|
||||||
|
- Add the key to the whitelist via AllowKey.
|
||||||
|
- Updated zabbix_agentd from 5.0.3 to 5.2.1.
|
||||||
|
|
||||||
|
### 2020.10.31.1
|
||||||
|
- Updated zabbix_agentd from 5.0.2 to 5.0.3
|
||||||
|
- Download updated plugins from stable instead of main.
|
||||||
|
- Fixed removal of old plugin packages during updates.
|
||||||
|
- Added new zabbix endpoint unraid.ups
|
||||||
|
|
||||||
|
### 2020.09.05.1
|
||||||
|
- Added a new field 'running' to qemu.disk
|
||||||
|
|
||||||
|
### 2020.08.11
|
||||||
|
- Added system temperature metrics. Note: These will only work if you have the Dynamix System Temperature plugin installed.
|
||||||
|
- Fixed the virtual interface detection in unraid.qemu.
|
||||||
|
|
||||||
|
### 2020.07.16
|
||||||
|
- Package based installation process.
|
||||||
|
- Added a zabbix template file.
|
||||||
|
|
||||||
|
### 2020.07.15
|
||||||
|
- More metrics
|
||||||
|
|
||||||
|
### 2020.07.14
|
||||||
|
- Initial commit
|
||||||
|
</CHANGES>
|
||||||
|
|
||||||
|
<FILE Run="/bin/bash"><INLINE>
|
||||||
|
echo "Installation of zabbix_agent plugin started."
|
||||||
|
if [ -e /boot/config/plugins/zabbix_agent/&packageName; ]; then
|
||||||
|
echo "Package already exists."
|
||||||
|
else
|
||||||
|
echo "Current &packageName; not found; removing old packages (if existing)."
|
||||||
|
rm /boot/config/plugins/zabbix_agent/*.txz
|
||||||
|
echo "Downloading current package..."
|
||||||
|
fi
|
||||||
|
</INLINE></FILE>
|
||||||
|
|
||||||
|
<FILE Name="/boot/config/plugins/zabbix_agent/&packageName;">
|
||||||
|
<URL>&packageURL;</URL>
|
||||||
|
<MD5>&packageMD5;</MD5>
|
||||||
|
</FILE>
|
||||||
|
|
||||||
|
<FILE Run="/bin/bash"><INLINE>
|
||||||
|
if [ -x /etc/rc.d/rc.zabbix_agentd ]; then
|
||||||
|
echo "Stopping old zabbix agent..."
|
||||||
|
/etc/rc.d/rc.zabbix_agentd stop
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Extracting support files..."
|
||||||
|
upgradepkg --install-new /boot/config/plugins/zabbix_agent/&packageName;
|
||||||
|
|
||||||
|
echo "Starting zabbix_agent..."
|
||||||
|
/etc/rc.d/rc.zabbix_agentd start
|
||||||
|
</INLINE></FILE>
|
||||||
|
|
||||||
|
|
||||||
|
<!--- Uninstall -->
|
||||||
|
|
||||||
|
<FILE Run="/bin/bash" Method="remove"><INLINE>
|
||||||
|
echo "Removal of zabbix_agent plugin started."
|
||||||
|
echo "Stopping zabbix_agentd..."
|
||||||
|
/etc/rc.d/rc.zabbix_agentd stop
|
||||||
|
|
||||||
|
echo "Uninstalling package..."
|
||||||
|
removepkg zabbix_agent
|
||||||
|
|
||||||
|
echo "Removing remaining plugin files..."
|
||||||
|
rm -rf /boot/config/plugins/zabbix_agent
|
||||||
|
|
||||||
|
echo "Removal of zabbix_agent plugin completed."
|
||||||
|
</INLINE></FILE>
|
||||||
|
|
||||||
|
</PLUGIN>
|
944
zabbix_template.xml
Normal file
944
zabbix_template.xml
Normal file
@ -0,0 +1,944 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<zabbix_export>
|
||||||
|
<version>5.0</version>
|
||||||
|
<date>2020-09-05T12:40:25Z</date>
|
||||||
|
<groups>
|
||||||
|
<group>
|
||||||
|
<name>Templates</name>
|
||||||
|
</group>
|
||||||
|
</groups>
|
||||||
|
<templates>
|
||||||
|
<template>
|
||||||
|
<template>Unraid server</template>
|
||||||
|
<name>Unraid server</name>
|
||||||
|
<groups>
|
||||||
|
<group>
|
||||||
|
<name>Templates</name>
|
||||||
|
</group>
|
||||||
|
</groups>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>CPUs</name>
|
||||||
|
</application>
|
||||||
|
<application>
|
||||||
|
<name>Disks</name>
|
||||||
|
</application>
|
||||||
|
<application>
|
||||||
|
<name>Memory</name>
|
||||||
|
</application>
|
||||||
|
<application>
|
||||||
|
<name>System</name>
|
||||||
|
</application>
|
||||||
|
<application>
|
||||||
|
<name>VMs</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<items>
|
||||||
|
<item>
|
||||||
|
<name>Zabbix agent ping</name>
|
||||||
|
<key>agent.ping</key>
|
||||||
|
<triggers>
|
||||||
|
<trigger>
|
||||||
|
<expression>{nodata(10m)}=1</expression>
|
||||||
|
<name>Zabbix agent is offline</name>
|
||||||
|
<priority>HIGH</priority>
|
||||||
|
</trigger>
|
||||||
|
</triggers>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<name>CPU total utilisation guest</name>
|
||||||
|
<key>system.cpu.util[all,guest,avg1]</key>
|
||||||
|
<value_type>FLOAT</value_type>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>CPUs</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<name>CPU total utilisation idle</name>
|
||||||
|
<key>system.cpu.util[all,idle,avg1]</key>
|
||||||
|
<value_type>FLOAT</value_type>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>CPUs</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<name>CPU total utilisation iowait</name>
|
||||||
|
<key>system.cpu.util[all,iowait,avg1]</key>
|
||||||
|
<value_type>FLOAT</value_type>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>CPUs</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<name>CPU total utilisation system</name>
|
||||||
|
<key>system.cpu.util[all,system,avg1]</key>
|
||||||
|
<value_type>FLOAT</value_type>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>CPUs</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<name>CPU total utilisation user</name>
|
||||||
|
<key>system.cpu.util[all,user,avg1]</key>
|
||||||
|
<value_type>FLOAT</value_type>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>CPUs</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<name>Disk totals</name>
|
||||||
|
<key>unraid.disks.totals</key>
|
||||||
|
<history>0</history>
|
||||||
|
<trends>0</trends>
|
||||||
|
<value_type>TEXT</value_type>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Disks</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<name>Total cache free</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.disks.totals[cache,free]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<units>B</units>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Disks</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.cache.free</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.disks.totals</key>
|
||||||
|
</master_item>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<name>Total cache size</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.disks.totals[cache,size]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<units>B</units>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Disks</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.cache.size</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.disks.totals</key>
|
||||||
|
</master_item>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<name>Total cache used</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.disks.totals[cache,used]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<units>B</units>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Disks</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.cache.used</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.disks.totals</key>
|
||||||
|
</master_item>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<name>Total data free</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.disks.totals[data,free]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<units>B</units>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Disks</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.data.free</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.disks.totals</key>
|
||||||
|
</master_item>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<name>Total data size</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.disks.totals[data,size]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<units>B</units>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Disks</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.data.size</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.disks.totals</key>
|
||||||
|
</master_item>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<name>Total data used</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.disks.totals[data,used]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<units>B</units>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Disks</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.data.used</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.disks.totals</key>
|
||||||
|
</master_item>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<name>Temperature data</name>
|
||||||
|
<key>unraid.temperatures</key>
|
||||||
|
<delay>2m</delay>
|
||||||
|
<history>1d</history>
|
||||||
|
<trends>0</trends>
|
||||||
|
<value_type>TEXT</value_type>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>System</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<name>Temperature CPU</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.temperatures[cpu]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<value_type>FLOAT</value_type>
|
||||||
|
<units>°C</units>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>System</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.cpu</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.temperatures</key>
|
||||||
|
</master_item>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<name>Temperature Mainboard</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.temperatures[mainboard]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<value_type>FLOAT</value_type>
|
||||||
|
<units>°C</units>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>System</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.mainboard</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.temperatures</key>
|
||||||
|
</master_item>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<name>Memory available</name>
|
||||||
|
<key>vm.memory.size[available]</key>
|
||||||
|
<units>B</units>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Memory</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<name>Memory used</name>
|
||||||
|
<key>vm.memory.size[used]</key>
|
||||||
|
<units>B</units>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Memory</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
</item>
|
||||||
|
</items>
|
||||||
|
<discovery_rules>
|
||||||
|
<discovery_rule>
|
||||||
|
<name>CPUs</name>
|
||||||
|
<key>system.cpu.discovery</key>
|
||||||
|
<delay>1h</delay>
|
||||||
|
<item_prototypes>
|
||||||
|
<item_prototype>
|
||||||
|
<name>CPU #{#CPU.NUMBER} utilisation guest</name>
|
||||||
|
<key>system.cpu.util[{#CPU.NUMBER},guest,avg1]</key>
|
||||||
|
<value_type>FLOAT</value_type>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>CPUs</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>CPU #{#CPU.NUMBER} utilisation idle</name>
|
||||||
|
<key>system.cpu.util[{#CPU.NUMBER},idle,avg1]</key>
|
||||||
|
<value_type>FLOAT</value_type>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>CPUs</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>CPU #{#CPU.NUMBER} utilisation iowait</name>
|
||||||
|
<key>system.cpu.util[{#CPU.NUMBER},iowait,avg1]</key>
|
||||||
|
<value_type>FLOAT</value_type>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>CPUs</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>CPU #{#CPU.NUMBER} utilisation system</name>
|
||||||
|
<key>system.cpu.util[{#CPU.NUMBER},system,avg1]</key>
|
||||||
|
<value_type>FLOAT</value_type>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>CPUs</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>CPU #{#CPU.NUMBER} utilisation user</name>
|
||||||
|
<key>system.cpu.util[{#CPU.NUMBER},user,avg1]</key>
|
||||||
|
<value_type>FLOAT</value_type>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>CPUs</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
</item_prototype>
|
||||||
|
</item_prototypes>
|
||||||
|
</discovery_rule>
|
||||||
|
<discovery_rule>
|
||||||
|
<name>Disks</name>
|
||||||
|
<key>unraid.disks.discovery</key>
|
||||||
|
<delay>10m</delay>
|
||||||
|
<item_prototypes>
|
||||||
|
<item_prototype>
|
||||||
|
<name>Disk {#ID} current reading</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.disk[{#ID},bytes_reading]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<units>B/s</units>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Disks</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.bytes_reading</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.disk[{#ID}]</key>
|
||||||
|
</master_item>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>Disk {#ID} current writing</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.disk[{#ID},bytes_writing]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<units>B/s</units>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Disks</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.bytes_writing</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.disk[{#ID}]</key>
|
||||||
|
</master_item>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>Disk {#ID} device</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.disk[{#ID},device]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<trends>0</trends>
|
||||||
|
<value_type>TEXT</value_type>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Disks</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.device</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.disk[{#ID}]</key>
|
||||||
|
</master_item>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>Disk {#ID} FS free</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.disk[{#ID},fs_free]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<units>B</units>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Disks</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.fs_free</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.disk[{#ID}]</key>
|
||||||
|
</master_item>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>Disk {#ID} FS size</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.disk[{#ID},fs_size]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<units>B</units>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Disks</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.fs_size</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.disk[{#ID}]</key>
|
||||||
|
</master_item>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>Disk {#ID} FS used</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.disk[{#ID},fs_used]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<units>B</units>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Disks</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.fs_used</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.disk[{#ID}]</key>
|
||||||
|
</master_item>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>Disk {#ID} name</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.disk[{#ID},name]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<trends>0</trends>
|
||||||
|
<value_type>TEXT</value_type>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Disks</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.name</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.disk[{#ID}]</key>
|
||||||
|
</master_item>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>Disk {#ID} errors</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.disk[{#ID},num_errors]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Disks</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.num_errors</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.disk[{#ID}]</key>
|
||||||
|
</master_item>
|
||||||
|
<trigger_prototypes>
|
||||||
|
<trigger_prototype>
|
||||||
|
<expression>{change()}>0</expression>
|
||||||
|
<recovery_mode>NONE</recovery_mode>
|
||||||
|
<name>Disk {#ID} errored</name>
|
||||||
|
<priority>HIGH</priority>
|
||||||
|
<manual_close>YES</manual_close>
|
||||||
|
</trigger_prototype>
|
||||||
|
</trigger_prototypes>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>Disk {#ID} reads</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.disk[{#ID},num_reads]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Disks</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.num_reads</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.disk[{#ID}]</key>
|
||||||
|
</master_item>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>Disk {#ID} writes</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.disk[{#ID},num_writes]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Disks</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.num_writes</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.disk[{#ID}]</key>
|
||||||
|
</master_item>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>Disk {#ID} running</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.disk[{#ID},running]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Disks</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<valuemap>
|
||||||
|
<name>Yes/No</name>
|
||||||
|
</valuemap>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.running</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.disk[{#ID}]</key>
|
||||||
|
</master_item>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>Disk {#ID} size</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.disk[{#ID},size]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<units>B</units>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Disks</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.size</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.disk[{#ID}]</key>
|
||||||
|
</master_item>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>Disk {#ID} status</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.disk[{#ID},status]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<trends>0</trends>
|
||||||
|
<value_type>TEXT</value_type>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Disks</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.status</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.disk[{#ID}]</key>
|
||||||
|
</master_item>
|
||||||
|
<trigger_prototypes>
|
||||||
|
<trigger_prototype>
|
||||||
|
<expression>{str(DISK_OK)}=0</expression>
|
||||||
|
<name>Disk {#ID} state is $1</name>
|
||||||
|
<priority>HIGH</priority>
|
||||||
|
</trigger_prototype>
|
||||||
|
</trigger_prototypes>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>Disk {#ID} temp</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.disk[{#ID},temp]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<units>°C</units>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Disks</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.temp</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.disk[{#ID}]</key>
|
||||||
|
</master_item>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>Disk {#ID} type</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.disk[{#ID},type]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<trends>0</trends>
|
||||||
|
<value_type>TEXT</value_type>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Disks</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.type</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.disk[{#ID}]</key>
|
||||||
|
</master_item>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>Disk {#ID} data</name>
|
||||||
|
<key>unraid.disk[{#ID}]</key>
|
||||||
|
<history>0</history>
|
||||||
|
<trends>0</trends>
|
||||||
|
<value_type>TEXT</value_type>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Disks</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
</item_prototype>
|
||||||
|
</item_prototypes>
|
||||||
|
</discovery_rule>
|
||||||
|
<discovery_rule>
|
||||||
|
<name>VMs</name>
|
||||||
|
<key>unraid.qemu.discovery</key>
|
||||||
|
<delay>10m</delay>
|
||||||
|
<item_prototypes>
|
||||||
|
<item_prototype>
|
||||||
|
<name>VM {#VM} CPUs</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.qemu[{#VM},cpus]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>VMs</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.cpus</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.qemu[{#VM}]</key>
|
||||||
|
</master_item>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>VM {#VM} CPU percentage</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.qemu[{#VM},cpu_percentage]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<value_type>FLOAT</value_type>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>VMs</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JAVASCRIPT</type>
|
||||||
|
<params>j=JSON.parse(value);
|
||||||
|
return j.cpu_time / j.cpus * 100;</params>
|
||||||
|
</step>
|
||||||
|
<step>
|
||||||
|
<type>CHANGE_PER_SECOND</type>
|
||||||
|
<params/>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.qemu[{#VM}]</key>
|
||||||
|
</master_item>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>VM {#VM} CPU time</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.qemu[{#VM},cpu_time]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<value_type>FLOAT</value_type>
|
||||||
|
<units>s</units>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>VMs</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.cpu_time</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.qemu[{#VM}]</key>
|
||||||
|
</master_item>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>VM {#VM} Memory max</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.qemu[{#VM},memory_max]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<units>B</units>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>VMs</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.memory_max</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.qemu[{#VM}]</key>
|
||||||
|
</master_item>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>VM {#VM} Memory used</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.qemu[{#VM},memory_used]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<units>B</units>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>VMs</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.memory_used</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.qemu[{#VM}]</key>
|
||||||
|
</master_item>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>VM {#VM} Network In</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.qemu[{#VM},network_in]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<units>B/s</units>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>VMs</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.network_bytes_in</params>
|
||||||
|
</step>
|
||||||
|
<step>
|
||||||
|
<type>CHANGE_PER_SECOND</type>
|
||||||
|
<params/>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.qemu[{#VM}]</key>
|
||||||
|
</master_item>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>VM {#VM} Network Out</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.qemu[{#VM},network_out]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<units>B/s</units>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>VMs</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.network_bytes_out</params>
|
||||||
|
</step>
|
||||||
|
<step>
|
||||||
|
<type>CHANGE_PER_SECOND</type>
|
||||||
|
<params/>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.qemu[{#VM}]</key>
|
||||||
|
</master_item>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>VM {#VM} state</name>
|
||||||
|
<type>DEPENDENT</type>
|
||||||
|
<key>unraid.qemu[{#VM},state]</key>
|
||||||
|
<delay>0</delay>
|
||||||
|
<trends>0</trends>
|
||||||
|
<value_type>TEXT</value_type>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>VMs</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>JSONPATH</type>
|
||||||
|
<params>$.state</params>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<master_item>
|
||||||
|
<key>unraid.qemu[{#VM}]</key>
|
||||||
|
</master_item>
|
||||||
|
</item_prototype>
|
||||||
|
<item_prototype>
|
||||||
|
<name>VM {#VM} data</name>
|
||||||
|
<key>unraid.qemu[{#VM}]</key>
|
||||||
|
<history>0</history>
|
||||||
|
<trends>0</trends>
|
||||||
|
<value_type>TEXT</value_type>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>VMs</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
</item_prototype>
|
||||||
|
</item_prototypes>
|
||||||
|
</discovery_rule>
|
||||||
|
</discovery_rules>
|
||||||
|
</template>
|
||||||
|
</templates>
|
||||||
|
<value_maps>
|
||||||
|
<value_map>
|
||||||
|
<name>Yes/No</name>
|
||||||
|
<mappings>
|
||||||
|
<mapping>
|
||||||
|
<value>0</value>
|
||||||
|
<newvalue>No</newvalue>
|
||||||
|
</mapping>
|
||||||
|
<mapping>
|
||||||
|
<value>1</value>
|
||||||
|
<newvalue>Yes</newvalue>
|
||||||
|
</mapping>
|
||||||
|
</mappings>
|
||||||
|
</value_map>
|
||||||
|
</value_maps>
|
||||||
|
</zabbix_export>
|
Reference in New Issue
Block a user