24 Commits

Author SHA1 Message Date
55cc07022a Merge branch 'main' into stable 2024-12-19 11:58:13 +01:00
1d982b26d2 Version 2024.12.19.1 2024-12-19 11:20:55 +01:00
81b295f4a3 Gracefully fail if diskload.ini is not available. 2024-12-19 09:48:42 +01:00
c49e905391 Merge branch 'main' into stable 2020-11-25 11:51:44 +01:00
71e652c94f Version 2020.11.25.1. 2020-11-25 06:51:18 +01:00
3259126b5f Updated zabbix_agent from 5.0.3 to 5.2.1. 2020-11-25 06:49:45 +01:00
6f4dc0fead You can now put a custom config file snippet at /boot/config/plugins/zabbix_agent/zabbix_agentd.custom.conf. 2020-11-25 06:29:57 +01:00
b4c2718f5b Version 2020.10.31.1 2020-10-31 12:01:20 +01:00
bd89975596 Fixed the removal of old packages during plugin update. 2020-10-31 11:58:27 +01:00
3de70efa44 Added an endpoint for UPS stats. 2020-10-31 11:57:54 +01:00
864d4385c3 The plugin will now be auto-updated from stable branch instead of main. 2020-10-31 11:57:21 +01:00
5f64422efd Added reminder to fill the changelog to build.sh 2020-10-31 11:56:05 +01:00
26f3a29a61 Updates zabbix_agentd from version 5.0.2 to 5.0.3. 2020-09-07 06:21:55 +02:00
04fc38f69a Merge branch 'main' of https://git.schle.nz/fabian/unraid-zabbix_agent into main 2020-09-05 14:46:34 +02:00
046fc6daa6 Version 2020.09.05.1 2020-09-05 14:44:34 +02:00
a1f6fa71a8 Updated zabbix_template.xml 2020-09-05 14:42:34 +02:00
bc40534bce Added field 'running' to qemu.disk. 2020-09-05 14:42:20 +02:00
d5329a3919 Updated the zabbix_template file 2020-08-28 19:03:05 +00:00
7f0033742c Version 2020.08.22.1 2020-08-22 14:29:46 +02:00
55b487627b Small changes to build.sh 2020-08-22 14:27:50 +02:00
44865c93ba Added slac-desc file for the package. 2020-08-22 14:27:37 +02:00
838e80fa22 Added the eXecute bit to temperatures.sh 2020-08-12 06:46:08 +02:00
cfbcdb0869 Version 2020.08.11.1 2020-08-12 06:40:12 +02:00
c1bce8a41c Changed the install procedure from a "custom" .tgz file to a real .txz package. 2020-08-12 06:37:27 +02:00
11 changed files with 199 additions and 25 deletions

View File

@ -1,23 +1,26 @@
#!/bin/bash #!/bin/bash
VERSION=`xpath -q -e 'string(//PLUGIN/@version)' zabbix_agent.plg` VERSION=`xpath -q -e 'string(//PLUGIN/@version)' zabbix_agent.plg`
FILE="zabbix_agent-$VERSION.package.tgz" FILE="zabbix_agent-$VERSION-x86_64-1.txz"
echo "Version in plugin file: $VERSION" echo "Version in plugin file: $VERSION"
echo "Generated file will be: $FILE" echo "Generated file will be: $FILE"
if [ -e "$FILE" ]; then if [ -e "$FILE" ]; then
echo
echo "File already exists." echo "File already exists."
givenMD5=`xpath -q -e 'string(//PLUGIN/@packageMD5)' zabbix_agent.plg` givenMD5=`xpath -q -e 'string(//PLUGIN/@packageMD5)' zabbix_agent.plg`
read currentMD5 _ < <(md5sum "$FILE") read currentMD5 _ < <(md5sum "$FILE")
if [ "$givenMD5" = "$currentMD5" ]; then if [ "$givenMD5" = "$currentMD5" ]; then
echo "MD5 value matches." echo "MD5 value is OK."
else else
echo "MD5 value does not match!" echo "MD5 value does not match!"
echo "unraid_zabbix.plg: $givenMD5" echo "unraid_zabbix.plg: $givenMD5"
echo "$FILE: $currentMD5" echo "$FILE: $currentMD5"
fi fi
echo
if [ "$1" != "--force" ]; then if [ "$1" != "--force" ]; then
echo "Stopping now. Call '$0 --force' to force recreating the file." echo "Stopping now. Call '$0 --force' to force recreating the file."
exit 1 exit 1
@ -29,8 +32,10 @@ read
echo "Creating $FILE..." echo "Creating $FILE..."
echo echo
tar -czvf "$FILE" files tar -cv --owner=root --group=root --lzma -C files -f "$FILE" .
echo echo
read md5 _ < <(md5sum "$FILE") read md5 _ < <(md5sum "$FILE")
echo "MD5 of the resulting file for the plugin file: $md5" 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 "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."

View File

@ -19,6 +19,8 @@ AllowKey=vfs.fs.*[*]
AllowKey=vm.memory.size[*] AllowKey=vm.memory.size[*]
AllowKey=unraid.* AllowKey=unraid.*
AllowKey=unraid.*[*] AllowKey=unraid.*[*]
AllowKey=custom.*
AllowKey=custom.*[*]
DenyKey=* DenyKey=*
@ -27,4 +29,7 @@ UserParameter=unraid.disk[*],/usr/local/emhttp/plugins/zabbix_agent/scripts/disk
UserParameter=unraid.disks.totals,/usr/local/emhttp/plugins/zabbix_agent/scripts/disks.totals.sh 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.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.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.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

19
files/install/slack-desc Normal file
View 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:

View File

@ -9,7 +9,7 @@ while read line; do
if [ $found = 1 ]; then if [ $found = 1 ]; then
[ $fsFree -ge 0 ] && [ $fsSize -ge 0 ] && fsUsed=$(( $fsSize - $fsFree )) [ $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 '{"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', ' echo -n '"num_writes":'$num_writes', "num_errors":'$num_errors', "type":"'$type'", "fs_size":'$fsSize', "fs_free":'$fsFree', "fs_used":'$fsUsed', "running":'$running', '
break break
else else
device='' device=''
@ -24,6 +24,7 @@ while read line; do
fsSize=-1 fsSize=-1
fsFree=-1 fsFree=-1
fsUsed=-1 fsUsed=-1
running=-1
fi fi
else else
while IFS="=" read key value; do while IFS="=" read key value; do
@ -41,6 +42,12 @@ while read line; do
[ $key = "type" ] && type="$value" [ $key = "type" ] && type="$value"
[ $key = "fsSize" ] && fsSize=$(( $value * 1024 )) [ $key = "fsSize" ] && fsSize=$(( $value * 1024 ))
[ $key = "fsFree" ] && fsFree=$(( $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" done <<< "$line"
fi fi
done < <(cat /var/local/emhttp/disks.ini ; echo "[empty]") done < <(cat /var/local/emhttp/disks.ini ; echo "[empty]")
@ -50,5 +57,9 @@ if [ $found = 0 ]; then
exit 1 exit 1
fi fi
read bytes_read bytes_written _ < <(grep $device"=" /var/local/emhttp/diskload.ini | cut -d"=" -f2) if [ -e /var/local/emhttp/diskload.ini ]; then
echo '"bytes_reading":'$bytes_read', "bytes_writing":'$bytes_written'}' 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

View File

View 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.

Binary file not shown.

Binary file not shown.

View File

@ -4,18 +4,39 @@
<!ENTITY name "zabbix_agent"> <!ENTITY name "zabbix_agent">
<!ENTITY author "fabianonline"> <!ENTITY author "fabianonline">
<!ENTITY plgauthor "fabianonline"> <!ENTITY plgauthor "fabianonline">
<!ENTITY baseURL "https://git.schle.nz/fabian/unraid-zabbix_agent/raw/branch/main"> <!ENTITY baseURL "https://git.schle.nz/fabian/unraid-zabbix_agent/raw/branch/stable">
<!ENTITY pluginURL "&baseURL;/zabbix_agent.plg"> <!ENTITY pluginURL "&baseURL;/zabbix_agent.plg">
<!ENTITY version "2020.08.11"> <!ENTITY version "2024.12.19.1">
<!ENTITY packageName "zabbix_agent-&version;.package.tgz"> <!ENTITY packageName "zabbix_agent-&version;-x86_64-1.txz">
<!ENTITY packageURL "&baseURL;/&packageName;"> <!ENTITY packageURL "&baseURL;/&packageName;">
<!ENTITY packageMD5 "dcf2e2bef5f4f88876ac52ed5ca1046c"> <!ENTITY packageMD5 "6e3a4e4b7712ec531a6da1ff946cf0a2">
]> ]>
<PLUGIN name="&name;" author="&author;" version="&version;" pluginURL="&pluginURL;" packageMD5="&packageMD5;"> <PLUGIN name="&name;" author="&author;" version="&version;" pluginURL="&pluginURL;" packageMD5="&packageMD5;">
<CHANGES> <CHANGES>
##&name; ## &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 ### 2020.08.11
- Added system temperature metrics. Note: These will only work if you have the Dynamix System Temperature plugin installed. - Added system temperature metrics. Note: These will only work if you have the Dynamix System Temperature plugin installed.
@ -38,7 +59,7 @@ if [ -e /boot/config/plugins/zabbix_agent/&packageName; ]; then
echo "Package already exists." echo "Package already exists."
else else
echo "Current &packageName; not found; removing old packages (if existing)." echo "Current &packageName; not found; removing old packages (if existing)."
rm /boot/config/plugins/zabbix_agent/*.package.tgz rm /boot/config/plugins/zabbix_agent/*.txz
echo "Downloading current package..." echo "Downloading current package..."
fi fi
</INLINE></FILE> </INLINE></FILE>
@ -55,8 +76,9 @@ if [ -x /etc/rc.d/rc.zabbix_agentd ]; then
fi fi
echo "Extracting support files..." echo "Extracting support files..."
tar -xzvf /boot/config/plugins/zabbix_agent/&packageName; --strip=1 -C / upgradepkg --install-new /boot/config/plugins/zabbix_agent/&packageName;
echo "Starting zabbix_agent..."
/etc/rc.d/rc.zabbix_agentd start /etc/rc.d/rc.zabbix_agentd start
</INLINE></FILE> </INLINE></FILE>
@ -67,14 +89,13 @@ tar -xzvf /boot/config/plugins/zabbix_agent/&packageName; --strip=1 -C /
echo "Removal of zabbix_agent plugin started." echo "Removal of zabbix_agent plugin started."
echo "Stopping zabbix_agentd..." echo "Stopping zabbix_agentd..."
/etc/rc.d/rc.zabbix_agentd stop /etc/rc.d/rc.zabbix_agentd stop
echo "Deleting /usr/sbin/zabbix_agentd..."
rm /usr/sbin/zabbix_agentd echo "Uninstalling package..."
echo "Deleting /etc/rc.d/rc.zabbix_agentd..." removepkg zabbix_agent
rm /etc/rc.d/rc.zabbix_agentd
echo "Deleting /boot/config/plugins/zabbix_agent/..." echo "Removing remaining plugin files..."
rm -rf /boot/config/plugins/zabbix_agent/ rm -rf /boot/config/plugins/zabbix_agent
echo "Deleting /usr/local/emhttp/plugins/zabbix_agent/..."
rm -rf /usr/local/emhttp/plugins/zabbix_agent/
echo "Removal of zabbix_agent plugin completed." echo "Removal of zabbix_agent plugin completed."
</INLINE></FILE> </INLINE></FILE>

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<zabbix_export> <zabbix_export>
<version>5.0</version> <version>5.0</version>
<date>2020-07-17T03:56:57Z</date> <date>2020-09-05T12:40:25Z</date>
<groups> <groups>
<group> <group>
<name>Servers</name> <name>Templates</name>
</group> </group>
</groups> </groups>
<templates> <templates>
@ -13,7 +13,7 @@
<name>Unraid server</name> <name>Unraid server</name>
<groups> <groups>
<group> <group>
<name>Servers</name> <name>Templates</name>
</group> </group>
</groups> </groups>
<applications> <applications>
@ -26,6 +26,9 @@
<application> <application>
<name>Memory</name> <name>Memory</name>
</application> </application>
<application>
<name>System</name>
</application>
<application> <application>
<name>VMs</name> <name>VMs</name>
</application> </application>
@ -230,6 +233,63 @@
<key>unraid.disks.totals</key> <key>unraid.disks.totals</key>
</master_item> </master_item>
</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> <item>
<name>Memory available</name> <name>Memory available</name>
<key>vm.memory.size[available]</key> <key>vm.memory.size[available]</key>
@ -532,6 +592,29 @@
<key>unraid.disk[{#ID}]</key> <key>unraid.disk[{#ID}]</key>
</master_item> </master_item>
</item_prototype> </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> <item_prototype>
<name>Disk {#ID} size</name> <name>Disk {#ID} size</name>
<type>DEPENDENT</type> <type>DEPENDENT</type>
@ -843,4 +926,19 @@ return j.cpu_time / j.cpus * 100;</params>
</discovery_rules> </discovery_rules>
</template> </template>
</templates> </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> </zabbix_export>