Uptime в мониторинге Cacti

Cacti хоть и получает SNMP-Uptime от устройств, но вот выводит его только в странице самого устройства, а когда таких устройств хотя бы больше 100, открывать страницу каждого становится неудобно. Надо свести их в единую таблицу.

Получить uptime сервера с помощью snmpwalk можно следующим образом:

snmpget -v2c -c public localhost 1.3.6.1.2.1.1.3.0

или таким:

snmpget -v2c -c public **localhost** sysUpTime.0

localhost нужно поменять на ip адрес интересующего сервера.

Для Cacti нам понадобится плагин monitor_uptime.

Код плагина написан на PHP, потому особых сложностей в редактировании не представляет. Для получения данных с оборудования были использованы стандартные PHP функции snmpget и snmp2_get, которым в качество аргументов передаются параметры хоста из БД Cacti, OID аптайма и таймаут ожидания. В итоге код получения аптайма вышел такой:

$snmp_uptime = " N\A";
include("../../include/config.php");
mysql_connect($database_hostname,$database_username,$database_password) OR DIE(mysql_error());
mysql_select_db($database_default) OR DIE(mysql_error());
$sql="SELECT * FROM `host` where `id`=$id";
$sql_res=mysql_query($sql) OR DIE(mysql_error());
while ($host=mysql_fetch_array($sql_res)){
	if ($host["snmp_version"] == '1'){
		$snmp_uptime = snmpget($host["hostname"],$host["snmp_community"],".1.3.6.1.2.1.1.3.0",55000);
  }
	else if ($host["snmp_version"] == '2'){
		$snmp_uptime =snmp2_get($host["hostname"],$host["snmp_community"],".1.3.6.1.2.1.1.3.0",55000);
  }
$str=strpos($snmp_uptime, ")");
$snmp_uptime = substr($snmp_uptime,$str+1);}

Также в саму таблицу добавим строку

<tr bgcolor='#eeeeee'>
  <td><strong>Uptime:</strong></td>
  <td><strong>$snmp_uptime</strong></td>
</tr><

После этого сохраняем, открываем Cacti и да здравствует uptime в реальном времени и удобном отображении

81ec955bcd6245128a7fadcbbaae881d

оригинал