Отслеживать единый параметр на нескольких компьютерах.

Started by sdm, December 02, 2014, 09:39:26 AM

Previous topic - Next topic

sdm

Имеется хранилище, к которому по оптике подключена группа компьютеров, при этом эти компьютеры являются рабочими станциями и периодически бывают выключены, есть задача отслеживать место на этом хранилище. Хранилище snmp не умеет, но snmp доступен на всех рабочих станциях, и отдает статистику.
В произвольный период времени парочка компьютеров всегда включена, парочка выключена, таким образом нужно отслеживать параметр по следующему принципу, если параметр доступен на 1-м компьютере, то брать значение с него, если нет, то брать значение со 2-го, 3-го, 4-го и т.д.
Каким образом можно реализовать такое?

Victor Kirhenshtein

Можно написать data collection script, который в цикле будет опрашивать ноды и возвращать первое успешно полученное значение. Выглядеть может например так:


nodes = %("node1", "node2", "node3");
foreach(n : nodes)
{
   node = FindNodeObject($node, n);
   if (node != null)
   {
      snmp = CreateSNMPTransport(node);
      if (snmp != null)
      {
         value = SNMPGetValue(snmp, ".1.3.6.1.2.1.1.1.0");  // put your OID here - you can also pass OID as script parameter
         if (value != null)
            return value;  // got response
      }
   }
}
return "ERROR";   // error indication


Соответственно DCI на массиве будет с типом Script и в качестве имени - скрипт из библиотеки.

sdm

Спасибо за решение..

Появился вопрос: где лучше создать эту метрику, в свойствах определенного узла это выглядит не очень хорошо, получается, что где-то нужно создать обьект допустим Storage (причем данный обьект не имеет ip-адреса) и, уже внутри него создавать метрику..

Victor Kirhenshtein

Да, именно так и стоит сделать. Узлы без IP адреса создавать можно, можно также использовать значение какого-то DCI для определения статуса такого узла, чтобы он не болтался в UNKNOWN. Надо будет только прописать етот узел как trusted в свойствах всех узлов с которых будет проишодить сбор данных.

sdm

Приветствую, я не отписывался, так как кое-что тестировал.
В результате сейчас наблюдается следующее: при выполнении скрипта вручную (тест в настройках метрики) скрипт возвращает нужное значение, т.е. с виду все работает.
Но, при всем этом в базу ничего не пишется, последние метрики и история недоступны.
В настройках выставлено: вести историю, опрос каждые n секунд, и т.д.

PS: Статус у этого узла так же отсутствует, может все дело в этом, нет статуса - нет и опроса.

Victor Kirhenshtein


sdm

Скриншоты настроек:

sdm

Возможно подтолкнет на какие-либо мысли: теперь, при создании нового узла в Infrastructure Services я получаю ошибку..
Каким образом создался Production_Storage теперь не совсем понимаю, может быть есть что-то неправильное в моих действиях??

Victor Kirhenshtein

Несколько замечаний:

1. Когда создаете новый storage, попробуйте указать 0.0.0.0 как "основной адрес".

2. Попробуйте сбор данных сделать не через transformation script у dummy DCI, a как скрипт в библиотеке и тип DCI "скрипт".

sdm

Спасибо за подсказку, при указании адреса 0.0.0.0 создание нового узла отрабатывает без вопросов.
Зато в отношении метрики все то же самое, что и ранее - история не пишется, последние значения недоступны.
Нет ли привязки метрики к статусу узла, когда в случае, если статус выключен или отсутствует, то и метрики не собираются.

sdm

Виктор требуются ли какие-нибудь логи, может имеются какие идеи, я готов проверить..

sdm

Данный вопрос условно решен, если добавить этот скрипт на реально существующий компьютер ( а не создавать узел в Infrastructure Services ), то она успешно считается и ведет историю..