2015-03-26 2 views
0

Я хотел бы, чтобы Zabbix контролировал различные элементы (на том же хосте или на разных хостах) и назначал значение в зависимости от результата, затем запустил его (или нет) триггер в зависимости от агрегации этих значений.Совокупные данные предмета из Zabbix?

Например, представим кластер из 3 узлов базы данных. Zabbix контролирует каждую из них посредством ping и увеличивает глобальную переменную на 1, если узел доступен. После раунда, переменная может иметь следующие значения:

  • 3 => (все узлы вверх) кластер ОК
  • 2 => (один узел вниз) кластер все еще работает, но в нерабочем состоянии
  • 1 => (два узла вниз) кластер работает, но не репликация не выполняется
  • 0 => (все узлы вниз) кластер вниз

Затем Zabbix запускает триггер с предупреждением тяжести, если значение равно 1 и триггер с высокой степенью тяжести, если va lue is 0.

Есть ли способ сделать это изначально или через модуль, не используя API? Благодарю.

ответ

1

Чтобы объединить данные из нескольких элементов в один, вы можете использовать aggregate items или calculated items. Совокупные элементы позволяют агрегировать все элементы с одним и тем же ключом в указанных группах хостов, тогда как вычисленные элементы позволяют произвольно выполнять операции над элементами на основе формулы.

Для того, чтобы иметь два триггера различной степени тяжести, вы можете найти trigger dependencies полезным. Здесь триггер с более низкой зависимостью будет зависеть от триггера с более высокой зависимостью.

+0

Например, grpsum [Cluster, icmpping, last] будет оценивать количество достижимых узлов в группе «Cluster». – asaveljevs

+0

Что касается первого комментария, я не думаю, что «sum (icmpping)» имеет большой смысл. Это должно быть нечто вроде «last (host1: icmpping) + last (host2: icmpping) + last (host3: icmpping) + ...» для каждого хоста, составляющего ваш кластер. – asaveljevs

+0

Что касается второго комментария, отображаемое сообщение об ошибке, вероятно, относится к расчетному элементу, а не к элементу агрегата. – asaveljevs

0

Спасибо. Следуя твоему совету, мне удалось сделать то, что я хотел. Ниже приведены этапы:

  1. создать группу хостов my_DB_cluster и заполнить ее IP-адресами узлов;
  2. создать новый шаблон my_template и добавить его в группу хозяев my_DB_cluster;
  3. внутри my_template, создайте новый элемент с ключом grpsum [my_DB_cluster, icmpping, last, 0];
  4. создать новое сопоставление значений и связать его с результатами элемента, чтобы получить сообщение («кластер вниз») вместо простого значения (0);
  5. внутри my_template, создайте триггеры с разной степенью серьезности на ключе grpsum [my_DB_cluster, icmpping, last, 0].
Смежные вопросы