Pull to refresh

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

Поставили мне недавно цель – мониторить аптаймы всех коммутаторов в реальном времени и обязательно с удобным интерфейсом. Так как свитчи уже мониторились с помощью Cacti, то и копать я начал в эту сторону. Увы, сам Cacti хоть и получает SNMP-Uptime коммутаторов, но вот выводит его только в странице самого устройства, а когда таких устройств хотя бы больше 100, открывать страницу каждого становится неудобно. Надо свести их в единую таблицу. Для этого пригодиться плагин monitor. Сам по себе он умеет только отслеживать есть ли связь с устройством или нет, и когда оно последний раз отключалось. Гугл на все мои запросы относительно плагинов, расширяющих сей функционал выдавал только плагин monitor_uptime, который, в общем-то, должен был подойти, и тогда статьи бы не было, но, увы, он не подошел (а точнее из-за него переставал отображаться весь Cacti) и мне пришлось дописывать нужный функционал в код самого плагина monitor.

Код плагина написан на 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);}

Была мысль вынести его в отдельную функцию и вызывать в нужном месте, но, в итоге решил не морочиться и просто интегрировал его в функцию render_host_tiles, которая, собственно, и рисует сводную таблицу всех устройств. Также в саму таблицу добавим строку
<tr bgcolor='#eeeeee'>
<td><strong>Uptime:</strong></td>
<td><strong>$snmp_uptime</strong></td>
</tr>


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

P.S. Первый раз после доработки страница плагина может грузиться несколько минут(пока опросит все оборудование), в дальнейшем работает резво и комфортно. В итоге выходит вот такая красота:

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.