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 :
A 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