Monitoraggio ZFS in Zabbix: Difference between revisions

From RVM Wiki
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 1: Line 1:
=Monitoraggio POOLs e Datasets=
*Sul client, scaricare il file e scompattarlo
*Sul client, scaricare il file e scompattarlo
  cd /tmp && \
  cd /tmp && \
Line 29: Line 30:
   Expression: /
   Expression: /


=Monitoraggio degli snapshot=
* Per far questo, occorre utilizzare la versione customizzata del template Zabbix
* Creare lo script di collecting dei timestamp deglis napshot:
mkdir -p /etc/zabbix/scripts
<pre>
cat > /etc/zabbix/scripts/zabbix-zfs-snapshot <<EOFile
#!/bin/bash
# Delay maximum half an hour
set -x
if [ -z "$1" ]
then
sleep $((RANDOM % 1800))
fi
# Clear temp file
/bin/rm -f /tmp/zfs-snapshot.dat.tmp
# Append lines in temp file
for DATASET in $(/usr/bin/sudo /sbin/zfs list \
| grep -v '^NAME' \
| /usr/bin/tr -s ' ' | /usr/bin/cut -f 1 --delimiter=' ')
do
TIMESTAMP=$(/usr/bin/sudo \
/sbin/zfs get creation -Hpr -t snapshot  ${DATASET} \
| /usr/bin/cut -f 3 | /usr/bin/sort -n | /usr/bin/tail -n 1)
if [ -z "$TIMESTAMP" ]
then
DATETIME=""
else
DATETIME=$(/bin/date -d @$TIMESTAMP +"%Y-%m-%d %H:%M:%S")
fi
echo ${DATASET} $TIMESTAMP $DATETIME >> /tmp/zfs-snapshot.dat.tmp
done
# Substitute real file with temp file
mv /tmp/zfs-snapshot.dat.tmp /var/lib/zabbix/zfs-snapshot.dat
EOFile
</pre>
chmod +x zabbix-zfs-snapshot
* Abilitarlo in cron:
<pre>
cat > /etc/cron.d/zabbix-zfs-snapshot <<EOFile
# Creates zfs snapshot time creation log file
#
#min    hours  DayOfMonth      Month  DayOfWeek user    command
# Incr backup mon-tue
0      *      *              *      *        zabbix /etc/zabbix/scripts/zabbix-zfs-snapshot
EOFile
</pre>
* Impostare il sudoers
<pre>
cat > /etc/sudoers.d/zabbix-zfs-snapshot <<EOFile
Defaults:zabbix !requiretty
zabbix ALL=(ALL) NOPASSWD: /sbin/zfs
EOFile
</pre>
* Definire gli userparamters:
<pre>
cat > /etc/zabbix/zabbix_agentd.d/zfs-snapshot.conf <<EOFile
UserParameter=zfs.snapshot.time[*],/bin/cat /var/lib/zabbix/zfs-snapshot.dat | grep $1 | /usr/bin/cut  --delimiter=' ' -f 2
EOFile
</pre>
* Assicurarsi che ci sia la homedir di zabbix:
mkdir -p /var/lib/zabbix
chown zabbix:zabbix /var/lib/zabbix
* Riavviare zabbix agent
systemctl restart zabbix-agent.service
* Provare a lanciare manualmente lo script per il collecting dei timestamp:
  sudo -u zabbix /etc/zabbix/scripts/zabbix-zfs-snapshot





Revision as of 17:48, 17 December 2018

Monitoraggio POOLs e Datasets

  • Sul client, scaricare il file e scompattarlo
cd /tmp && \
wget "https://share.zabbix.com/index.php?option=com_mtree&task=att_download&link_id=350&cf_id=38" -O ZFSonLinux.zip && \
unzip ZFSonLinux.zip && \
cd ZFSonLinux
  • Installare i files
mv ZFSonLinux_sudo_rules /etc/sudoers.d/
mv  ZFSonLinux_userparameters.conf /etc/zabbix/zabbix_agentd.d/
  • Verificare se i comandi funzionano (DATA è il nome di un pool zfs presente):
sudo -u zabbix /usr/bin/sudo /sbin/zpool list -H -o health DATA
  • Riavviare zabbix_agent
systemctl restart zabbix-agent.service
  • Dal server o dal prozy zabbix, verificare che le keys siano supportate:
zabbix_get -s 192.168.1.10 -k zfs.zpool.health[DATA]
  • Importare il template ZFSonLinux_template.xml suls erver ed assegnare il template all'host
ZFSonLinux
  • Definire la Regex in
Administration / General/ Regular Expression
Name: ZFS Fileset
Expressions
  Expression type: Character string included
  Expression: /

Monitoraggio degli snapshot

  • Per far questo, occorre utilizzare la versione customizzata del template Zabbix
  • Creare lo script di collecting dei timestamp deglis napshot:

mkdir -p /etc/zabbix/scripts

cat > /etc/zabbix/scripts/zabbix-zfs-snapshot <<EOFile
#!/bin/bash
# Delay maximum half an hour
set -x 
if [ -z "$1" ]
then
	sleep $((RANDOM % 1800))
fi

# Clear temp file
/bin/rm -f /tmp/zfs-snapshot.dat.tmp

# Append lines in temp file
for DATASET in $(/usr/bin/sudo /sbin/zfs list \
					| grep -v '^NAME' \
					| /usr/bin/tr -s ' ' | /usr/bin/cut -f 1 --delimiter=' ')
do 
	TIMESTAMP=$(/usr/bin/sudo \
					/sbin/zfs get creation -Hpr -t snapshot  ${DATASET} \
					| /usr/bin/cut -f 3 | /usr/bin/sort -n | /usr/bin/tail -n 1) 
	if [ -z "$TIMESTAMP" ]
	then
		DATETIME=""
	else
		DATETIME=$(/bin/date -d @$TIMESTAMP +"%Y-%m-%d %H:%M:%S")
	fi
	echo ${DATASET} $TIMESTAMP $DATETIME >> /tmp/zfs-snapshot.dat.tmp
done

# Substitute real file with temp file
mv /tmp/zfs-snapshot.dat.tmp /var/lib/zabbix/zfs-snapshot.dat
EOFile
chmod +x zabbix-zfs-snapshot
  • Abilitarlo in cron:
cat > /etc/cron.d/zabbix-zfs-snapshot <<EOFile
# Creates zfs snapshot time creation log file
#
#min    hours   DayOfMonth      Month   DayOfWeek user     command
# Incr backup mon-tue
0      *      *               *      *        zabbix /etc/zabbix/scripts/zabbix-zfs-snapshot
EOFile
  • Impostare il sudoers
cat > /etc/sudoers.d/zabbix-zfs-snapshot <<EOFile
Defaults:zabbix !requiretty

zabbix ALL=(ALL) NOPASSWD: /sbin/zfs
EOFile
  • Definire gli userparamters:
cat > /etc/zabbix/zabbix_agentd.d/zfs-snapshot.conf <<EOFile
UserParameter=zfs.snapshot.time[*],/bin/cat /var/lib/zabbix/zfs-snapshot.dat | grep $1 | /usr/bin/cut  --delimiter=' ' -f 2 
EOFile
  • Assicurarsi che ci sia la homedir di zabbix:
mkdir -p /var/lib/zabbix
chown zabbix:zabbix /var/lib/zabbix
  • Riavviare zabbix agent
systemctl restart zabbix-agent.service
  • Provare a lanciare manualmente lo script per il collecting dei timestamp:
 sudo -u zabbix /etc/zabbix/scripts/zabbix-zfs-snapshot


Riferimenti