Temperature Support for Synology

The poller return now the correct value for the System temperature.

Check in my Synology.
This commit is contained in:
Calvario
2015-06-10 18:02:32 +02:00
parent a3ddceb954
commit 0150982fe9
2 changed files with 28 additions and 14 deletions
+1
View File
@@ -31,6 +31,7 @@ Contributors to LibreNMS:
- Thom Seddon <thom@seddonmedia.co.uk> (thomseddon)
- Vitali Kari <vitali.kari@gmail.com> (vitalisator)
- James Campbell <neokjames@gmail.com> (neokjames)
- Steve Calvário <calvario.steve@gmail.com> (Calvario)
[1]: http://observium.org/ "Observium web site"
+27 -14
View File
@@ -1,21 +1,34 @@
<?php
if ($device['os'] == 'dsm') {
echo "DSM ";
$oid = '2';
$temp_oid = '.1.3.6.1.4.1.6574.1.2';
$current = snmp_get($device,$temp_oid,"-Oqv");
discover_sensor($valid['sensor'], 'temperature', $device, $temp_oid, $oid, 'snmp', 'System Temperature', '1', '1', NULL, NULL, NULL, NULL, $current);
$disks = snmpwalk_cache_multi_oid($device, "diskTable", array(), "SYNOLOGY-DISK-MIB");
if (is_array($disks)) {
$cur_oid = '.1.3.6.1.4.1.6574.2.1.1.6.';
foreach ($disks as $index => $entry) {
$oid = $index;
$disk_oid = $cur_oid.$index;
$current = $entry['diskTemperature'];
$descr = $entry['diskID'] . ' ' . $entry['diskModel'];
discover_sensor($valid['sensor'], 'temperature', $device, $disk_oid, $oid, 'snmp', $descr, '1', '1', NULL, NULL, NULL, NULL, $current);
echo "DSM temperature ";
// DiskStation Temperature
$diskstation_temperature_oid = '.1.3.6.1.4.1.6574.1.2.0';
// DiskStation Disk Temperature
$disk_temperature_oid = '.1.3.6.1.4.1.6574.2.1.1.6.';
// Get DiskStation temperature
$diskstation_temperature = snmp_get($device, $diskstation_temperature_oid, "-Oqv");
// Save the DiskStation temperature
discover_sensor($valid['sensor'], 'temperature', $device, $diskstation_temperature_oid, '2', 'snmp', 'System Temperature', '1', '1', NULL, NULL, NULL, NULL, $diskstation_temperature);
// Get all disks in the device
$disks = snmpwalk_cache_multi_oid($device, 'diskTable', array(), 'SYNOLOGY-DISK-MIB');
// Parse all disks in the device to get the temperature
if (is_array($disks)) {
foreach ($disks as $disk_number => $entry) {
// Get the disk temperature full oid
$disk_oid = $disk_temperature_oid.$disk_number;
// Get the temperature for the disk
$disk_temperature = $entry['diskTemperature'];
// Getting the disk information (Number and model)
$disk_information = $entry['diskID'] . ' ' . $entry['diskModel'];
// Save the temperature for the disk
discover_sensor($valid['sensor'], 'temperature', $device, $disk_oid, $disk_number, 'snmp', $disk_information, '1', '1', NULL, NULL, NULL, NULL, $disk_temperature);
}
}
}