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.
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 }