WikiMiNET

La documentation technique et administrative

Outils pour utilisateurs

Outils du site


wiki:monitoring:userparameters

Ceci est une ancienne révision du document !


Personnalisation Du monitoring à MiNET

Apache

Nous allons accéder à la page de status du serveur apache. Pour celà :

  • Créez un Virtual Host monitoring :
<Location /server-status>
    SetHandler server-status
    Allow from 127.0.0.1
    Order deny,allow
    Deny from all
</Location>

Les données sont accessibles à cette URL : http://127.0.0.1/server-status

Les user parameter ne font que selectionner les données intéressantes :

UserParameter=apache_custom_stat[*],curl http://127.0.0.1/server-status 2>/dev/null | head -n $1 | tail -n 1 | awk '{print $ $2}'

NGinx

Les concept est à peu près le même sur NGinx. Créez un Virtual Host monitoring avec :

server {
    listen 10061;
    location /nginx_status {
        stub_status on;
        access_log off;
        allow 127.0.0.1;
        deny all;
    }
}

Puis le tout est accessible à cet URL : http://127.0.0.1:10061/nginx_status

Ici aussi le Userparameter ne sert qu'à sélectionner les info qui nous intéressent :

UserParameter=nginx[*],curl http://127.0.0.1:10061/nginx_status | head -n $1 | tail -n 1 | awk '{print $ $2}'

MySQL

Commencez par créer un utilisateur monitoring avec les droits qui vous semblent approprié (pas ceux d'administration).

Les valeurs sont obtenue par mysqladmin.

Voici le Userparameter :

UserParameter=mysql[*],cat /etc/zabbix/sql.stat| head -n $1 | tail -n 1 | awk '{print $ $2}'

Postgrey SQL

On peu obtenir directement les informations depuis le client en ligne de commande : psql

Voici les Userparameters :

UserParameter=psql.version,psql --version|head -n1
UserParameter=psql.server_processes,psql -t -c "select sum(numbackends) from pg_stat_database"
UserParameter=psql.tx_commited,psql -t -c "select sum(xact_commit) from pg_stat_database"
UserParameter=psql.tx_rolledback,psql -t -c "select sum(xact_rollback) from pg_stat_database"
UserParameter=psql.db_size[*],psql -t -c "select pg_database_size('$1')"
UserParameter=psql.db_connections[*],psql -t -c "select numbackends from pg_stat_database where datname = '$1'"
UserParameter=psql.db_returned[*],psql -t -c "select tup_returned from pg_stat_database where datname = '$1'"
UserParameter=psql.db_fetched[*],psql -t -c "select tup_fetched from pg_stat_database where datname = '$1'"
UserParameter=psql.db_inserted[*],psql -t -c "select tup_inserted from pg_stat_database where datname = '$1'"
UserParameter=psql.db_updated[*],psql -t -c "select tup_updated from pg_stat_database where datname = '$1'"
UserParameter=psql.db_deleted[*],psql -t -c "select tup_deleted from pg_stat_database where datname = '$1'"

NMap

Le concept est, depuis une machine dédiée, de scanner une fois par jour le réseau MiNET, et de raller si des ports SSH sont ouvert depuis les machines de Prod vers un autre VLAN.

Pensez à ajouter les machines dans le 102 qui ont aussi une IP de développement.

Un cron éxécute donc nmap depuis l'utilisateur nmap

 su -c "crontab -l" nmap 

:

#!/bin/bash
 
#file /home/nmap/NnapScanner.sh
 
cd /home/nmap
 
# ------ Vlans Publics----------
 
# Vlan 2 = Public Prod
nmap -F 157.159.40.0/25 | egrep -e "(repor|ssh)" > ssh_2_detail.txt; 
grep -e "ssh"  ssh_2_detail.txt | wc -l >  ssh_2.txt
nmap -F 157.159.40.0/25 | egrep -e "(repor|telnet)"  >  telnet_2_detail.txt;  
grep -e "telnet"  telnet_2_detail.txt | wc -l >  telnet_2.txt
 
# Vlan 3 = Public Dev
nmap -F 157.159.40.128/26 | egrep -e "(repor|telnet)"  >  telnet_3_detail.txt; 
grep -e "telnet"   telnet_3_detail.txt  | wc -l >  telnet_3.txt 
 
# ------ Vlans Private----------
 
# Vlan 103 = Private Dev
 
# List de hosts a monitorer pour SSH, keep this list updated
listHosts=" 192.168.103.15 192.168.103.1  192.168.103.13 192.168.103.18 192.168.103.80 "
 
echo . >  ssh_103_detail.txt ; 
for host in $listHosts ; do 
	nmap -F $host | egrep  -e "(repor|ssh)" >>  ssh_103_detail.txt; 
done;  
grep -e "ssh"  ssh_103_detail.txt | wc -l >  ssh_103.txt
 
nmap -F 192.168.103.0/24 | egrep -e "(repor|telnet)"  >  telnet_103_detail.txt ; 
grep -e "telnet"  telnet_103_detail.txt | wc -l >  telnet_103.txt
 
# Vlan 14 = Admin Wifi
nmap -F 192.168.14.0/24 |  egrep -e "(repor|telnet)"  >  telnet_14_detail.txt; 
grep -e "telnet"  telnet_14_detail.txt  | wc -l >  telnet_14.txt

Avec zabbix, on ne fait que lire la valeur de ces fichiers. Editez

/etc/zabbix/zabbix_agentd.conf
UserParameter=nmap[*],cat $1

Et mettez sur les Triggers Zabbix du host *nmap* un check pour ces items ci

Firewall

Nous utilisons netstat -s pour obtenir les stats du firewall.

Par ailleurs nous lisons aussi les fichiers indiquant les stats sur la conntrack. Nous comptons aussi le nombre de sockets.

Voici les Userparameters :

UserParameter=netstat[*],netstat -s | head -n $1 | tail -n 1 | awk '{print $ $2}'
UserParameter=socket,netstat -an | grep "tcp\ \|udp\ \|udp6\|tcp6" | wc -l
UserParameter=conntrack,cat /proc/sys/net/ipv4/netfilter/ip_conntrack_count
UserParameter=conntrack_capacity,cat /proc/sys/net/ipv4/netfilter/ip_conntrack_max

ZFS

Le contenu de cette page a été utilisé.

Voici les user parameters correspondant :

UserParameter=zstat[*],/etc/zabbix/zstat.sh $1 $2
UserParameter=arc[*],/etc/zabbix/arcstat.pl -f arcsz | tail -n 1 | awk '{print $ $1}' | cut -d "G" -f 1
UserParameter=l2arc[*],/etc/zabbix/arcstat.pl -f l2size | tail -n 1 | awk '{print $ $1}'| cut -d "G" -f 1
UserParameter=memory_rep[*],echo ::memstat | sudo mdb -k | grep $1 | awk '{print $ $2}' | cut -d "%" -f 1
UserParameter=zpoolstatus[*],zpool status | grep $1 | wc -l
UserParameter=diskperf[*],iostat -xtc | grep $1 | awk '{print $ $2}'
UserParameter=raidZfreespac[*],sudo /etc/zabbix/free_space.sh
UserParameter=nfs.nfstat[*],nfsstat -s -v 3| head -n $1 | tail -n 1 |  awk '{print $ $2}'
UserParameter=nbsocket,netstat -an | wc -l
UserParameter=archit[*],/etc/zabbix/arcstat.pl -f read,hits,miss,hit%,l2read,l2hits,l2miss,l2hit%,arcsz,l2size 1 2 | tail -n 1 | awk '{print $ $1}'
UserParameter=last_snap_date[*],zfs list -t snapshot | grep '$1/$2@' | tail -n 1 | cut -d "@" -f 2 | cut -d " " -f 1 | cut -c7-12

De plus, voici les modifications à faire dans /etc/sudoers:

Cmnd_Alias ZABBIX_PROGRAMMS = /root/arcstat.pl, /usr/bin/mdb, /usr/bin/bc, /sbin/zfs, /usr/sbin/zfs, /usr/sbin/swap, /bin/cat, /etc/zabbix/free_space.sh
 
zabbix ALL=(ALL) NOPASSWD: ZABBIX_PROGRAMMS

Machines physiques

Cette page présente comment installer les outils dont nous allons nous servir.

Pour ce qui est du monitoring NFS, nous utilisons nfsstat -c.

Par ailleurs nous comptons le nombre de socket retournés par netstat -an

Voici les Userparameters :

UserParameter=sensors.temp.ambient,sudo ipmitool sdr type 'Temperature' |grep Ambient |grep 7.1 |sed -e 's/.*7.1 | \([0-9]\+\).*/\1/'
UserParameter=sensors.temp.ram[*],sensors | grep DIMM | tail -n 1 | cut -d '+' -f 2 | awk 'split($ \$1,x,\"°\") { print x[1] }'
UserParameter=nfsstat[*],nfsstat -c | head -n \$1 | tail -n 1 |  awk '{print $ \$2}'
UserParameter=ioping[*],sudo ioping -c 200 \$1 -i 0.001 | tail -n 1 | cut -d \"=\" -f 2 | cut -d \"/\" -f 3
UserParameter=nbsocket,netstat -an | wc -l

TV

Nous utilisons un script qui compte le nombre de processus de mumudvb, et qui relance les tunners qui sont éteint. Rien de bien plus compliqué.

Le script se trouve ici : /etc/zabbix/up_tunner.sh et appartient à root.

wiki/monitoring/userparameters.1468667289.txt.gz · Dernière modification: 2020/06/27 18:15 (modification externe)