15 Commits

11 changed files with 165 additions and 11 deletions

View File

@ -5,19 +5,22 @@ 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
@ -34,3 +37,5 @@ 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

@ -28,3 +28,4 @@ UserParameter=unraid.disks.totals,/usr/local/emhttp/plugins/zabbix_agent/scripts
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

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]")

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.

View File

@ -4,12 +4,12 @@
<!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.1"> <!ENTITY version "2020.10.31.1">
<!ENTITY packageName "zabbix_agent-&version;-x86_64-1.txz"> <!ENTITY packageName "zabbix_agent-&version;-x86_64-1.txz">
<!ENTITY packageURL "&baseURL;/&packageName;"> <!ENTITY packageURL "&baseURL;/&packageName;">
<!ENTITY packageMD5 "5eedea739129f638ac5098945039d43b"> <!ENTITY packageMD5 "33d8467dcd13471cc08e0f56e4b611df">
]> ]>
<PLUGIN name="&name;" author="&author;" version="&version;" pluginURL="&pluginURL;" packageMD5="&packageMD5;"> <PLUGIN name="&name;" author="&author;" version="&version;" pluginURL="&pluginURL;" packageMD5="&packageMD5;">
@ -17,6 +17,15 @@
<CHANGES> <CHANGES>
## &name; ## &name;
### 2010.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.
- Fixed the virtual interface detection in unraid.qemu. - Fixed the virtual interface detection in unraid.qemu.
@ -38,7 +47,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>

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>