Archives de catégorie : Nagios

Note sur Eyes Of Network

notify email

  • Ajout de l’option -r pour forcer l’envoie
/usr/bin/printf "%b" "***** Nagios  *****\\n\\nNotification Type: $NOTIFICATIONTYPE$\\n\\nService: $SERVICEDESC$\\nHost: $HOSTALIAS$\\nAddress: $HOSTADDRESS$\\nState: $SERVICESTATE$\\n\\nDate/Time: $LONGDATETIME$\\n\\nAdditional Info:\\n\\n$SERVICEOUTPUT$" | /bin/mail -s "Services $SERVICESTATE$ alert for $HOSTNAME$/$SERVICEDESC$!" -r $CONTACTEMAIL$ $CONTACTEMAIL$
  • email ne fonctionne pas, voir /srv/eyesofnetwork/nagios-3.5.1/etc/
define contact {
contact_name admin
host_notifications_enabled 1
service_notifications_enabled 1
host_notification_period 24x7
service_notification_period 24x7
host_notification_options d,u,r,f,s
service_notification_options w,u,c,r,f,s
host_notification_commands notify-host-by-email,notify-service-by-email
service_notification_commands notify-host-by-email,notify-service-by-email
can_submit_commands 1
retain_status_information 1
email admin[at]domaine.local; <= on vérifie cette ligne
}

check_update_ipfire

snmpwalk -v2c -c public 127.0.0.1 nsExtendOutput1
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."update" = STRING: 0
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."echotest" = STRING: hello world
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."update" = STRING: 0
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."echotest" = STRING: hello world
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."update" = INTEGER: 1
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."echotest" = INTEGER: 1
NET-SNMP-EXTEND-MIB::nsExtendResult."update" = INTEGER: 0
NET-SNMP-EXTEND-MIB::nsExtendResult."echotest" = INTEGER: 0
snmptranslate -On NET-SNMP-EXTEND-MIB::nsExtendOutput1Line.\"update\"
.1.3.6.1.4.1.8072.1.3.2.3.1.1.6.117.112.100.97.116.101 <= GOOD
  • Command à créer dans EON
$USER1$/check_snmp -H $HOSTADDRESS$ -P 1 -C $USER2$ -o .1.3.6.1.4.1.8072.1.3.2.3.1.1.6.117.112.100.97.116.101 -l "Update" -s 0 -c 2
  • Ce qui donnerai dans un fichier texte normal
define command {
    command_name    check_ipfire_update
    command_line    $USER1$/check_snmp -H $HOSTADDRESS$ -P 1 -C $USER2$ -o .1.3.6.1.4.1.8072.1.3.2.3.1.1.6.117.112.100.97.116.101 -s 0 -c 2 -l "Update"
}
  • debug : /srv/eyesofnetwork/nagios-3.5.1/plugins/debug
#!/bin/bash
# Attention au caractère ! dans la commande nagios.
DATE=$(date +%d-%m-%Y-%H-%M-%S)
DIR=/tmp/nagios-${DATE}
echo ${@} > ${DIR}
${@}

Superviser une station de disque Synology via NAGIOS.

Le SNMP est le protocol de supervision d’un réseau informatique. A savoir, il existe une distribution OpenSource EyesOfNetwork (EON) qui est dédié à la supervision d’un parc informatique. Même Windows a un service portant le nom d’interruption SNMP, effectivement, il est possible de diagnostiquer la santé du poste de travail. Nagios est un superviseur, pour démarrer je l’ai installé via Pakfire dans Ipfire.

Dans cette page, je tente d’expliquer comment trouver les commandes pour afficher les informations de ma station de disque à partir d’une distribution Linux.

  • Dans la station de disque :
    Monitorer une station de disque SynologyA communauté, mettre: public

Télécharger les MIBS et placer les fichier dans : /root/.snmp/mibs/, et créer un fichier snmp.conf

cat << EOF > /root/.snmp/snmp.conf
mibs +SYNOLOGY-DISK-MIB
mibs +SYNOLOGY-SYSTEM-MIB
mibs +SYNOLOGY-RAID-MIB
EOF

Dans les fichiers MIBS fournis par Synology, en fouillant un peu, on trouve des OBJECT-TYPE avec une liste de champs et leur type d’accès. Ici, je m’interesse qu’aux champs en lecture. Par exemple, je prend le champ « temperature » dans le fichier SYSTEM et je tape la commande ci-dessous pour trouver l’OID :

[root@localhost nagios]# snmptranslate -M+/root/.snmp/mibs/SYNOLOGY-SYSTEM-MIB.txt -On -IR  temperature

Voici l’ensemble des résultats après investigation:

SYSTEM-MIB
	systemStatus		.1.3.6.1.4.1.6574.1.1.0
	temperature		.1.3.6.1.4.1.6574.1.2.0
	powerStatus		.1.3.6.1.4.1.6574.1.3.0
	systemFanStatus		.1.3.6.1.4.1.6574.1.4.1.0
	cpuFanStatus		.1.3.6.1.4.1.6574.1.4.2.0
	modelName		.1.3.6.1.4.1.6574.1.5.1.0
	serialNumber		.1.3.6.1.4.1.6574.1.5.2.0
	version			.1.3.6.1.4.1.6574.1.5.3.0
	upgradeAvailable	.1.3.6.1.4.1.6574.1.5.4.0


SYNOLOGY-DISK-MIB.txt
	diskID			.1.3.6.1.4.1.6574.2.1.1.2.$ARG1$
	diskModel		.1.3.6.1.4.1.6574.2.1.1.3.$ARG1$
	diskType		.1.3.6.1.4.1.6574.2.1.1.4.$ARG1$
	diskStatus		.1.3.6.1.4.1.6574.2.1.1.5.$ARG1$
	diskTemperature		.1.3.6.1.4.1.6574.2.1.1.6.$ARG1$
	

SYNOLOGY-RAID-MIB.txt
	raidName		.1.3.6.1.4.1.6574.3.1.1.2.0
	raidStatus		.1.3.6.1.4.1.6574.3.1.1.3.0

Démonstation :

Ensuite, je teste en ligne de commande :

[root@ipfire nagios]#  ./check_snmp -H $IP -P 1 -C public -o .1.3.6.1.4.1.6574.1.2.0
SNMP OK - 28 | iso.3.6.1.4.1.6574.1.2.0=28

28 est la température du system. Pour éviter l’erreur noté ci-dessous, on fait bien attention d’ajouter  un « .0 » à la fin de l’OID comme ci-dessus mis en évidence en rouge.

Liste complètes des commandes :

define command {
command_name check_synology_version
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -P 1 -C $USER2$ -o .1.3.6.1.4.1.6574.1.5.3.0 -l "version"
}

define command {
command_name check_synology_upgradeAvailable
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -P 1 -C $USER2$ -o .1.3.6.1.4.1.6574.1.5.4.0 -l "upgradeAvailable" -s 2
}

define command {
command_name check_synology_temperature
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -P 1 -C $USER2$ -o .1.3.6.1.4.1.6574.1.2.0 -l "temperature" -s 1 -u C -w 40 -c 50
}

define command {
command_name check_synology_systemStatus
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -P 1 -C $USER2$ -o .1.3.6.1.4.1.6574.1.1.0 -l "systemStatus" -s 1
}

define command {
command_name check_synology_systemFanStatus
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -P 1 -C $USER2$ -o .1.3.6.1.4.1.6574.1.4.1.0 -l "systemFanStatus" -s 1
}

define command {
command_name check_synology_serialNumber
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -P 1 -C $USER2$ -o .1.3.6.1.4.1.6574.1.5.2.0 -l "serialNumber"
}

define command {
command_name check_synology_raidStatus
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -P 1 -C $USER2$ -o .1.3.6.1.4.1.6574.3.1.1.3.0 -l "raidStatus" -s 1
}

define command {
command_name check_synology_raidName
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -P 1 -C $USER2$ -o .1.3.6.1.4.1.6574.3.1.1.2.0 -l "raidName"
}

define command {
command_name check_synology_powerStatus
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -P 1 -C $USER2$ -o .1.3.6.1.4.1.6574.1.3.0 -l "powerStatus" -s 1
}

define command {
command_name check_synology_modelName
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -P 1 -C $USER2$ -o .1.3.6.1.4.1.6574.1.5.1.0 -l "modelName"
}

define command {
command_name check_synology_diskTemperature
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -P 1 -C $USER2$ -o .1.3.6.1.4.1.6574.2.1.1.6.$ARG1$ -l "diskTemperature" -u C -w 40 -c 50
}

define command {
command_name check_synology_diskStatus
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -P 1 -C $USER2$ -o .1.3.6.1.4.1.6574.2.1.1.5.$ARG1$ -l "diskStatus" -s 1
}

define command {
command_name check_synology_diskModel
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -P 1 -C $USER2$ -o .1.3.6.1.4.1.6574.2.1.1.3.$ARG1$ -l "diskModel"
}

define command {
command_name check_synology_diskID
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -P 1 -C $USER2$ -o .1.3.6.1.4.1.6574.2.1.1.2.$ARG1$ -l "diskID"
}

define command {
command_name check_synology_cpuFanStatus
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -P 1 -C $USER2$ -o .1.3.6.1.4.1.6574.1.4.2.0 -l "cpuFanStatus" -s 1
}

Liste complètes des services :

define service {
 host_name diskstation
 service_description check_synology_diskTemperature_0
 check_command check_synology_diskTemperature!0!40!50
 use generic-service ; name of service template to use
}

define service {
 host_name diskstation
 service_description check_synology_diskStatus_1
 check_command check_synology_diskStatus!1
 use generic-service ; name of service template to use
}

define service {
 host_name diskstation
 service_description check_synology_diskID_0
 check_command check_synology_diskID!0
 use generic-service ; name of service template to use
}

define service {
 host_name diskstation
 service_description check_synology_cpuFanStatus
 check_command check_synology_cpuFanStatus
 use generic-service ; name of service template to use
}

define service {
 host_name diskstation
 service_description check_synology_diskID_1
 check_command check_synology_diskID!1
 use generic-service ; name of service template to use
}

define service {
 host_name diskstation
 service_description check_synology_diskModel_0
 check_command check_synology_diskModel!0
 use generic-service ; name of service template to use
}

define service {
 host_name diskstation
 service_description check_synology_diskModel_1
 check_command check_synology_diskModel!1
 use generic-service ; name of service template to use
}

define service {
 host_name diskstation
 service_description check_synology_diskStatus_0
 check_command check_synology_diskStatus!0
 use generic-service ; name of service template to use
}

define service {
 host_name diskstation
 service_description check_synology_diskTemperature_1
 check_command check_synology_diskTemperature!1!40!50
 use generic-service ; name of service template to use
}

define service {
 host_name diskstation
 service_description check_synology_modelName
 check_command check_synology_modelName
 use generic-service ; name of service template to use
}

define service {
 host_name diskstation
 service_description check_synology_powerStatus
 check_command check_synology_powerStatus
 use generic-service ; name of service template to use
}

define service {
 host_name diskstation
 service_description check_synology_raidName
 check_command check_synology_raidName
 use generic-service ; name of service template to use
}

define service {
 host_name diskstation
 service_description check_synology_raidStatus
 check_command check_synology_raidStatus
 use generic-service ; name of service template to use
}

define service {
 host_name diskstation
 service_description check_synology_serialNumber
 check_command check_synology_serialNumber
 use generic-service ; name of service template to use
}

define service {
 host_name diskstation
 service_description check_synology_systemFanStatus
 check_command check_synology_systemFanStatus
 use generic-service ; name of service template to use
}

define service {
 host_name diskstation
 service_description check_synology_systemStatus
 check_command check_synology_systemStatus
 use generic-service ; name of service template to use
}

define service {
 host_name diskstation
 service_description check_synology_temperature
 check_command check_synology_temperature!0!40!50
 use generic-service ; name of service template to use
}

define service {
 host_name diskstation
 service_description check_synology_upgradeAvailable
 check_command check_synology_upgradeAvailable
 use generic-service ; name of service template to use
}

define service {
 host_name diskstation
 service_description check_synology_version
 check_command check_synology_version
 use generic-service ; name of service template to use
}

source :

http://sodermalm.net/?p=139