Zabbix low level discovery rule script voor ZFS Pools

Pagina: 1
Acties:

  • Neptunus
  • Registratie: Januari 2001
  • Laatst online: 23-06 16:04
Ik ben bezig om voor een Zabbix agent een low level discovery rule script aan het werk te krijgen. Ik ben niet heel erg thuis in scripten. Maar ben al aardig op weg. Helaas werkt het nog niet helemaal goed.

Script wordt uitgevoert op een nas4free systeem (gebaseert op FreeBSD).

Mijn doel is om een low level discovery rule script voor ZFS Pools te maken. Zodat de Zabbix Server automatisch ziet dat er op een host ZFS pools aanwezig zijn. Met deze info kan ik dat triggers en graphs aanmaken.

Files located in:
code:
1
2
3
4
5
6
sideswipe: zabbix2_agentd.conf.d # pwd
/usr/local/etc/zabbix2/zabbix2_agentd.conf.d
sideswipe: zabbix2_agentd.conf.d # ll
total 8
-rwxr-xr-x  1 root  wheel  1463 Aug 20 19:23 zfs-discovery.sh*
-rw-r--r--  1 root  wheel   304 Aug 20 19:04 zfs.conf


zfs-discovery.sh
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/bin/bash
#################################################################################################
# Script aimed for zabbix agent(s) of low level discovery rule script for ZFS Pools discovery   #
#                                                                                               #
#                                                                                               #
#################################################################################################


################################################
# PARAMETERS THAT CAN BE MODIFIED BY THE USER
################################################

################################################
# Path to used utilities
################################################
BIN_ZPOOL="/sbin/zpool"

################################################

declare -a pools
#pools=(a b c)

n=0
#for i in $(/sbin/zpool list -H -o name) ; do
for i in $($BIN_ZPOOL list -H -o name) ; do
  pools[$n]="$i"
  #echo "Pool: $n = $i"     #to confirm the entry
  let "n= $n + 1"
done

# Get length of an array
length=${#pools[@]}

echo "{"
echo -e "\t\"data\":[\n"

for (( i=0; i<${length}; i++ ))
do
   if [ $i == $length ]; then
     echo -e "\t{ \"{#ZFSPOOL}\":\"${pools[$i]}\" }"
   else
     echo -e "\t{ \"{#ZFSPOOL}\":\"${pools[$i]}\" },"
   fi
done

echo -e "\n\t]\n"
echo "}"


Voorbeelden van resultaten in (JSON format) als het script standalone draait (./zfs-discovery.sh):
code:
1
2
3
4
5
6
7
8
9
{
        "data":[

        { "{#ZFSPOOL}":"zssddata" },
        { "{#ZFSPOOL}":"zstore" },

        ]

}


zfs.conf
code:
1
2
3
4
5
6
7
# ZFS checks

# zpool(1M) status, parameters: zpool-name,property
# parameters eg.: rpool,health
# see zpool list -o for available properties
UserParameter=zpool.status[*],zpool list -H -o $2 $1|sed -e 's/%//'
UserParameter=zpool.discovery, /usr/local/etc/zabbix2/zabbix2_agentd.conf.d/zfs-discovery.sh


Problemen als ik zabbix agent restart:
code:
1
2
3
4
5
sideswipe: zabbix2_agentd.conf.d # /usr/local/etc/rc.d/zabbix_agentd restart
zabbix_agentd not running?
Starting zabbix_agentd.
zabbix_agentd [29353]: unknown parameter [BIN_ZPOOL] in config file [/usr/local/etc/zabbix2/zabbix2_agentd.conf.d/zfs-discovery.sh], line 17
/usr/local/etc/rc.d/zabbix_agentd: WARNING: failed to start zabbix_agentd


Als ik aanpassingen doe:
code:
1
2
3
4
BIN_ZPOOL="/sbin/zpool"

#for i in $(/sbin/zpool list -H -o name) ; do
for i in $($BIN_ZPOOL list -H -o name) ; do

naar
code:
1
2
3
4
#BIN_ZPOOL="/sbin/zpool"

for i in $(/sbin/zpool list -H -o name) ; do
#for i in $($BIN_ZPOOL list -H -o name) ; do


Met deze aanpassingen draaid het script prima standalone, maar als ik via de zabbix agent start dan loop ik weer tegen problemen aan:
code:
1
2
3
4
sideswipe: zabbix2_agentd.conf.d #  /usr/local/etc/rc.d/zabbix_agentd restart                                                                               zabbix_agentd not running?
Starting zabbix_agentd.
zabbix_agentd [29374]: invalid entry [declare -a pools] (not following "parameter=value" notation) in config file [/usr/local/etc/zabbix2/zabbix2_agentd.conf.d/zfs-discovery.sh], line 21
/usr/local/etc/rc.d/zabbix_agentd: WARNING: failed to start zabbix_agentd


Ik ben niet een expert met bash. Ik loop een beetje vast en hoop dat er tweakers zijn die me verder op weg kunnen helpen.

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 22:42

CAPSLOCK2000

zie teletekst pagina 888

Ik weet niks van Zabbix, maar volgens mij probeert Zabbix je script in te lezen als configuratie-file. Ik denk dat je het script op een andere plek moet zetten, bv /usr/local/bin/ en alleen zfs.conf in /usr/local/etc/zabbix2/zabbix2_agentd.conf.d/ .

This post is warranted for the full amount you paid me for it.


Acties:
  • 0 Henk 'm!

  • Neptunus
  • Registratie: Januari 2001
  • Laatst online: 23-06 16:04
CAPSLOCK2000 schreef op donderdag 22 augustus 2013 @ 20:53:
Ik weet niks van Zabbix, maar volgens mij probeert Zabbix je script in te lezen als configuratie-file. Ik denk dat je het script op een andere plek moet zetten, bv /usr/local/bin/ en alleen zfs.conf in /usr/local/etc/zabbix2/zabbix2_agentd.conf.d/ .
Ik denk dat jij gelikt hebt. Beetje beginners fout van mijn kant 8)7 Ik ga dit weekeind even proberen.

Acties:
  • 0 Henk 'm!

  • Neptunus
  • Registratie: Januari 2001
  • Laatst online: 23-06 16:04
Neptunus schreef op vrijdag 23 augustus 2013 @ 08:41:
[...]


Ik denk dat jij gelikt hebt. Beetje beginners fout van mijn kant 8)7 Ik ga dit weekeind even proberen.
Jep beginners foutje. Het is gelukt! :)