diff --git a/html/pages/device/overview/generic/sensor.inc.php b/html/pages/device/overview/generic/sensor.inc.php
index 30863cda6..48b10c45e 100644
--- a/html/pages/device/overview/generic/sensor.inc.php
+++ b/html/pages/device/overview/generic/sensor.inc.php
@@ -1,6 +1,6 @@
"$blockdevice: $descr", 'current' => $temperature, 'index' => $diskcount);
+ }
+ echo "\n";
+}
+
+?>
\ No newline at end of file
diff --git a/includes/polling/functions.inc.php b/includes/polling/functions.inc.php
index b880e9337..8a043ec53 100644
--- a/includes/polling/functions.inc.php
+++ b/includes/polling/functions.inc.php
@@ -2,24 +2,43 @@
function poll_sensor($device, $class, $unit)
{
- global $config, $memcache;
+ global $config, $memcache, $agent_sensors;
- foreach (dbFetchRows("SELECT * FROM `sensors` WHERE `sensor_class` = ? AND `device_id` = ? AND `poller_type` = 'snmp'", array($class, $device['device_id'])) as $sensor)
+ foreach (dbFetchRows("SELECT * FROM `sensors` WHERE `sensor_class` = ? AND `device_id` = ?", array($class, $device['device_id'])) as $sensor)
{
- echo("Checking $class " . $sensor['sensor_descr'] . "... ");
+ echo("Checking (" . $sensor['poller_type'] . ") $class " . $sensor['sensor_descr'] . "... ");
- if ($class == "temperature")
+ if ($sensor['poller_type'] == "snmp")
{
- for ($i = 0;$i < 5;$i++) # Try 5 times to get a valid temp reading
+ if ($class == "temperature")
{
- if ($debug) echo("Attempt $i ");
- $sensor_value = trim(str_replace("\"", "", snmp_get($device, $sensor['sensor_oid'], "-OUqnv", "SNMPv2-MIB")));
+ for ($i = 0;$i < 5;$i++) # Try 5 times to get a valid temp reading
+ {
+ if ($debug) echo("Attempt $i ");
+ $sensor_value = trim(str_replace("\"", "", snmp_get($device, $sensor['sensor_oid'], "-OUqnv", "SNMPv2-MIB")));
- if ($sensor_value < 9000) break; # TME sometimes sends 999.9 when it is right in the middle of an update;
- sleep(1); # Give the TME some time to reset
+ if ($sensor_value < 9000) break; # TME sometimes sends 999.9 when it is right in the middle of an update;
+ sleep(1); # Give the TME some time to reset
+ }
+ } else {
+ $sensor_value = trim(str_replace("\"", "", snmp_get($device, $sensor['sensor_oid'], "-OUqnv", "SNMPv2-MIB")));
}
- } else {
- $sensor_value = trim(str_replace("\"", "", snmp_get($device, $sensor['sensor_oid'], "-OUqnv", "SNMPv2-MIB")));
+ } else if ($sensor['poller_type'] == "agent")
+ {
+ if (isset($agent_sensors))
+ {
+ $sensor_value = $agent_sensors[$class][$sensor['sensor_type']][$sensor['sensor_index']]['current'];
+ }
+ else
+ {
+ echo "no agent data!\n";
+ break;
+ }
+ }
+ else
+ {
+ echo "unknown poller type!\n";
+ break;
}
if ($sensor_value == -32768) { echo("Invalid (-32768) "); $sensor_value = 0; }
diff --git a/includes/polling/ipmi.inc.php b/includes/polling/ipmi.inc.php
index 55f8c6ff8..979407da8 100755
--- a/includes/polling/ipmi.inc.php
+++ b/includes/polling/ipmi.inc.php
@@ -33,10 +33,6 @@ if ($ipmi['host'] = get_dev_attrib($device,'ipmi_hostname'))
$rrd_file = get_sensor_rrd($device, $ipmisensors);
- ## FIXME - sensor name format change 2011/04/26 - remove this in $amount_of_time.
- ## We don't want to reduce performance forever because douchebags don't svn up!
- $old_rrd_file = $config['rrd_dir'] . "/" . $device['hostname'] . "/" . safename($ipmisensors['sensor_class'].'-'.$ipmisensors['sensor_type'].'-'.$ipmisensors['sensor_index'] . ".rrd");
-
if (is_file($old_rrd_file))
{
rename($old_rrd_file, $rrd_file);
diff --git a/includes/polling/unix-agent.inc.php b/includes/polling/unix-agent.inc.php
index 14e07affb..4bd0170d3 100755
--- a/includes/polling/unix-agent.inc.php
+++ b/includes/polling/unix-agent.inc.php
@@ -1,12 +1,12 @@
>>", $section);
list($sa, $sb) = explode("-", $section, 2);
@@ -53,15 +52,33 @@ if($device['os_group'] == "unix")
}
}
-# print_r($agent_data);
+ if ($debug) { print_r($agent_data); }
include("unix-agent/packages.inc.php");
include("unix-agent/munin-plugins.inc.php");
+
+ foreach (array_keys($agent_data) as $key)
+ {
+ if (file_exists("includes/polling/unix-agent/$key.inc.php"))
+ {
+ if ($debug) { echo("Including: unix-agent/$key.inc.php"); }
+ include("unix-agent/$key.inc.php");
+ }
+ }
+
+ foreach (array_keys($agent_data['app']) as $key)
+ {
+ if (file_exists("includes/polling/applications/$key.inc.php"))
+ {
+ if ($debug) { echo("Including: applications/$key.inc.php"); }
+ include("applications/$key.inc.php");
+ }
+ }
### Processes
if (!empty($agent_data['ps']))
{
- echo("\nProcesses: ");
+ echo("Processes: ");
foreach (explode("\n", $agent_data['ps']) as $process)
{
$process = preg_replace("/\((.*),([0-9]*),([0-9]*),([0-9\.]*)\)\ (.*)/", "\\1|\\2|\\3|\\4|\\5", $process);
@@ -69,6 +86,7 @@ if($device['os_group'] == "unix")
$processlist[] = array('user' => $user, 'vsz' => $vsz, 'rss' => $rss, 'pcpu' => $pcpu, 'command' => $command);
}
#print_r($processlist);
+ echo("\n");
}
### Apache
@@ -126,6 +144,13 @@ if($device['os_group'] == "unix")
}
}
}
+
+ if (!empty($agent_sensors))
+ {
+ echo("Sensors: ");
+ check_valid_sensors($device, 'temperature', $valid['sensor'], 'agent');
+ echo("\n");
+ }
echo("\n");
}
diff --git a/includes/polling/unix-agent/packages.inc.php b/includes/polling/unix-agent/packages.inc.php
index 06d29f6c6..92f058c04 100755
--- a/includes/polling/unix-agent/packages.inc.php
+++ b/includes/polling/unix-agent/packages.inc.php
@@ -1,144 +1,146 @@
"10" || count($pkgs_db[$manager][$name][$arch], 1) == '0')
- {
- dbInsert(array('device_id' => $device['device_id'], 'name' => $name, 'manager' => $manager,
- 'status' => 1, 'version' => $version, 'build' => $build, 'arch' => $arch, 'size' => $size), 'packages');
- if ($build != "") { $dbuild = '-' . $build; } else { $dbuild = ''; }
- echo("+".$name."-".$version.$dbuild."-".$arch);
- log_event('Package installed: '.$name.' ('.$arch.') version '.$version.$dbuild, $device, 'package');
- } elseif(count($pkgs_db[$manager][$name][$arch], 1)) {
- $pkg_c = dbFetchRow("SELECT * FROM `packages` WHERE `device_id` = ? AND `manager` = ? AND `name` = ? and `arch` = ? ORDER BY version DESC, build DESC", array($device['device_id'], $manager, $name, $arch));
- if ($pkg_c['build'] != "") { $pkg_c_dbuild = '-'.$pkg_c['build']; } else { $pkg_c_dbuild = ''; }
- echo("U(".$pkg_c['name']."-".$pkg_c['version'].$pkg_c_dbuild."|".$name."-".$version.$dbuild.")");
- $pkg_update = array('version' => $version, 'build' => $build, 'status' => '1', 'size' => $size);
- dbUpdate($pkg_update, 'packages', '`pkg_id` = ?', array($pkg_c['pkg_id']));
- log_event('Package updated: '.$name.' ('.$arch.') from '.$pkg_c['version'].$pkg_c_dbuild .' to '.$version.$dbuild, $device, 'package');
- unset($pkgs_db_id[$pkg_c['pkg_id']]);
- }
- }
- unset($pkg_update);
+ dbUpdate($pkg_update, 'packages', '`pkg_id` = ?', array($id));
+ echo("u");
+ } else {
+ echo(".");
}
-
- ## Packages
- foreach ($pkgs_db_id as $id => $pkg)
+ unset($pkgs_db_id[$id]);
+ } else {
+ if (count($pkgs[$manager][$name][$arch], 1) > "10" || count($pkgs_db[$manager][$name][$arch], 1) == '0')
{
- dbDelete('packages', "`pkg_id` = ?", array($id));
- echo("-".$pkg['text']);
- log_event('Package removed: '.$pkg['name'].' '.$pkg['arch'].' '.$pkg['version']. ($pkg['build'] != '' ? "-".$pkg['build'] : ''), $device, 'package');
+ dbInsert(array('device_id' => $device['device_id'], 'name' => $name, 'manager' => $manager,
+ 'status' => 1, 'version' => $version, 'build' => $build, 'arch' => $arch, 'size' => $size), 'packages');
+ if ($build != "") { $dbuild = '-' . $build; } else { $dbuild = ''; }
+ echo("+".$name."-".$version.$dbuild."-".$arch);
+ log_event('Package installed: '.$name.' ('.$arch.') version '.$version.$dbuild, $device, 'package');
+ } elseif(count($pkgs_db[$manager][$name][$arch], 1)) {
+ $pkg_c = dbFetchRow("SELECT * FROM `packages` WHERE `device_id` = ? AND `manager` = ? AND `name` = ? and `arch` = ? ORDER BY version DESC, build DESC", array($device['device_id'], $manager, $name, $arch));
+ if ($pkg_c['build'] != "") { $pkg_c_dbuild = '-'.$pkg_c['build']; } else { $pkg_c_dbuild = ''; }
+ echo("U(".$pkg_c['name']."-".$pkg_c['version'].$pkg_c_dbuild."|".$name."-".$version.$dbuild.")");
+ $pkg_update = array('version' => $version, 'build' => $build, 'status' => '1', 'size' => $size);
+ dbUpdate($pkg_update, 'packages', '`pkg_id` = ?', array($pkg_c['pkg_id']));
+ log_event('Package updated: '.$name.' ('.$arch.') from '.$pkg_c['version'].$pkg_c_dbuild .' to '.$version.$dbuild, $device, 'package');
+ unset($pkgs_db_id[$pkg_c['pkg_id']]);
}
+ }
+ unset($pkg_update);
+}
- unset($pkg);
- unset($pkgs_db_id);
- unset($pkg_c);
- unset($pkgs);
- unset($pkgs_db);
- unset($pkgs_db_db);
+## Packages
+foreach ($pkgs_db_id as $id => $pkg)
+{
+ dbDelete('packages', "`pkg_id` = ?", array($id));
+ echo("-".$pkg['text']);
+ log_event('Package removed: '.$pkg['name'].' '.$pkg['arch'].' '.$pkg['version']. ($pkg['build'] != '' ? "-".$pkg['build'] : ''), $device, 'package');
+}
+
+echo "\n";
+
+unset($pkg);
+unset($pkgs_db_id);
+unset($pkg_c);
+unset($pkgs);
+unset($pkgs_db);
+unset($pkgs_db_db);
?>
diff --git a/scripts/agent-local/hddtemp b/scripts/agent-local/hddtemp
new file mode 100755
index 000000000..558fa11c1
--- /dev/null
+++ b/scripts/agent-local/hddtemp
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+# hddtemp sensor readings
+# needs hddtemp daemon listening on (at least) localhost
+# requires netcat to be installed and in the path
+# (c) 2012, Tom Laermans for Observium
+
+echo '<<>>'
+nc localhost 7634
+echo