Cacti - убираем отрицательные значения на графике при помощи CDEF


194

Cacti предоставляет надежную и расширяемую систему оперативного мониторинга и управления сбоями. Это также комплексное решение для построения сетевых графиков, предназначенное для использования возможностей хранения данных и функций построения графиков RRDTool.

В данной статье попробуем научиться очищать графики Cacti от заведомо ложных значений, полученных в результате сбоев.

Иногда при сборе данных возникают ошибки. Например, при перезагрузке службы mysql на сервере, скрипт принимает ложные данные. Это очень портит общую картину и пользоваться графиком становится просто невозможно:

На данном графике вообще не должно быть отрицательных данных. Попробуем исправить это при помощи функций CDEF.

CDEF — это математические формулы, которые изменяют числовые данные из одного или многих источников данных. CDEF в Cacti являются полным аналогом CDEF в RRDtool. Cacti просто предоставляет интерфейс для их создания и управления.

Как создать и использовать новую CDEF функцию в Cacti

Наша функция будет заменять отрицательные значения на 0.
Инструменты
  • Cacti
Необходимо зайти в раздел CDEF. Для этого в административном интерфейсе Cacti заходим в раздел Предустановки->CDEF. Тут можно увидеть список заранее созданных CDEF функций.
В правом верхнем углу нажимаем кнопку Создать (+)
Наша функция будет называться "CDEF Pozitive or zero". Название Вы придумываете сами
Теперь необходимо заложить алгоритм работы для нашей функции. Это делается путем создания пунктов с данными. Подробности можно увидеть на скриншоте. По порядку добавляйте следующие пункты:
1. Тип пункта: "Special Data Source"; Значение "CURRENT_DATA_SOURCE"
2. Тип пункта: "Custom String"; Значение "0"
3. Тип пункта: "Функция"; Значение "MAX"
Как это работает? По порядку - взяли текущее значение и 0. Затем ищем максимальное из них. Таким образом все отрицательные значения будут преобразованы в 0.
Сохраняем результат. Теперь наша CDEF функция готова и можно её наблюдать с списке готовых к использованию функций.
Для того, чтобы применить CDEF на графике, необходимо зайти в панель редактирования шаблона графика. Для этого переходим в административном интерфейсе Шаблоны->График. Ищем нужный график (для удобства есть поиск по названию) и кликаем по названию.
В панели редактирования графика ищем раздел Graph Template Items. Это список элементов, которые выводятся на графике. В данном примере тут есть элементы с типом AREA (закрашенная область), LINE (линия) и GPRINT (легенда под графиком).
По очереди проходим все элементы графика, связанные с данными и задаем нашу CDEF функцию
Результат изменения настроек можно увидеть на скриншоте

Будьте внимательны! Данную функцию можно применять только для тех данных, у которых ТОЧНО не может быть отрицательных значений, иначе получите искаженные графики

Результат на графике

Теперь наши неправильные значения были заменены на 0. Это не идеальное решение, но приемлемое, так как по крайней мере график сохраняет свою функциональность.

Дополнительно инвертировать данные

Иногда при выводе данных на графике некоторые значения для наглядности специально инвертируют. Для этого часто как раз и применяют CDEF функцию. Но проблема в том, что одновременно можно применить только одну функцию. Для того, что бы выполнить проверку на отрицательные значения и затем инвертировать результат можно написать новую CDEF функцию:

По порядку добавляйте следующие пункты:
1. Тип пункта: "Special Data Source"; Значение "CURRENT_DATA_SOURCE"
2. Тип пункта: "Custom String"; Значение "0"
3. Тип пункта: "Функция"; Значение "MAX"
4. Тип пункта: "Custom String"; Значение "-1"
5. Тип пункта: "Оператор"; Значение "*"

Пример с инвертированием
Добавить комментарий
Может быть интересно
Модуль Migrate это фреймворк для миграции (импорта) данных в Drupal из любых источников.
1

Несколько способов как в twig объединить несколько строк в одну

3
Иногда при разработке сайта появляется необходимость создавать отдельный шаблон для определенной ноды. По умолчанию такой возможности нет, зато можно это прикрутить самостоятельно. Как это сделать? Это можно узнать в данной статье.
Те, кто использует модуль Double field могли заметить, что в текстовой области отсутствует редактор. Бывают случаи, когда для удобства наполнения он просто необходим.
1

APCu - это хранилище "ключ-значение" в памяти для PHP. Ключи являются строками (string), а значения могут быть любыми переменными PHP. APCu поддерживает только кеширование переменных в пользовательском пространстве. APCu - это APC без кеширования опкода.

4