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:
zfs-discovery.sh
Voorbeelden van resultaten in (JSON format) als het script standalone draait (./zfs-discovery.sh):
zfs.conf
Problemen als ik zabbix agent restart:
Als ik aanpassingen doe:
naar
Met deze aanpassingen draaid het script prima standalone, maar als ik via de zabbix agent start dan loop ik weer tegen problemen aan:
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.
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.