Ad Widget

Collapse

Аналитика Zabbix.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Ivan Egorkin
    Junior Member
    • Nov 2019
    • 7

    #1

    Аналитика Zabbix.

    Добрый день сообщество.
    Прошу прощения если вопрос не новый и решение уже не раз обсуждалось, но я к сожалению его не нашел и буду очень благодарен если мне помогут его найти.
    Итак, есть Zabbix сервер 4.0.13 и некоторое множество линукс устройств которые генерируют лог файл который в свою очередь мониторится элементом данных заббикс "Search_LOG"
    Имя = Search_LOG
    Ключ = log["/var/log/logfile.log",Search_String,"UTF-8",100,skip,0]
    Интервал обновления = 5 мин
    Поиск строки и тригер повешенный на этот элемент данных работает.
    Теперь задача. Необходимо иметь возможность задавать период и смотреть какое количество вхождений в лог было за сутки или за несколько часов или например за прошлые сутки по одному устройству или по группе или по всем устройствам. Т.е. например суммировать количество срабатываний по 5-ти устройствам за прошлый день. (сутки)

    Задача бьется на 2
    1. Получение количественных данных по каждому устройству.
    2. Обработка и визуализация отчета.

    1.1. Я попробовал сделать вычисляемый элемент данных в том же шаблоне что и элемент данных "Search_LOG".
    Имя = Calc_Search_LOG
    Тип = Вычисляемый
    Ключ = string.finded.calc
    Интервал обновления = 1 мин
    Формула = count(log["/var/log/logfile.log",Search_String,"UTF-8",100,skip,0],60) = подразумевалось что результатом будет количество строк за последние 60 секунд. Почему то это не сработало. (если кто то поправит меня буду признателен, сам я не разобрался почему это не сработало.)
    1.2. Ок. есть обходной костыль с log.count сделал элемент данных
    Имя = Count_Search_LOG
    Ключ = log.count[/var/log/logfile.log,(Search_String),"UTF-8",100,skip,0]
    Интервал обновления = 1 мин
    В результате имеем последовательность цифр в единицу интервала обновления. Т.е. если в 1 минуту было 2 срабатывания в логе = 2 если ни одного то = 0.
    Т.е. с первой задачей худо-бедно справились. Теперь нужно сделать подсчет и визуализацию.

    2.1 Сделал новый шаблон. Создал пустой узел сети. Повесил на него этот шаблон. В шаблоне создал элемент данных
    Имя = GRP_SUM
    Ключ = grpsum["GRP_5_UNITS","log.count[/var/log/logfile.log,(Search_String),"UTF-8",100,skip,0]",sum,1d]
    Период обновления = 1м
    В результате имеем число равное сумме срабатываний по указанной группе устройств за последние 24 часа. Вроде бы все как нужно, но есть большое но. Эта цифра постоянно изменяется т.к. ключ " 1d " постоянно смещается относительно текущего часа. т.е. если сейчас 15-00 то это будет с 15-00 сейчас по 15-00 вчера, и соответственно если сейчас 9-00 утра то и элемент данных посчитает все с 9 вчера до 9 сейчас, а хотелось бы все же видеть фиксированную цифру именно за вчера за промежуток с 8 утра по 23 часа вечера. и так же за сегодня с 8 утра по текущее время.

    Вопрос. Возможно ли сделать такую аналитику на базе Заббикса? Как лучше ее реализовать? Посоветуйте что то, сам отчаялся искать.
  • wins
    Senior Member
    • Sep 2014
    • 307

    #2
    А подкорректировать задачу никак нельзя? Например, чтобы эти линукс-устройства сами обращались на заббикс-сервер через zabbix-agent \ snmp ?
    Если нет - лучше создать скрипт-парсер для большого логфайла с входными параметрами [host] [interval] и уже им отдавать результаты в заббикс-агент.
    Ну и не забыть логротейт. Парсить большие файлы - фу.

    Comment

    • Ivan Egorkin
      Junior Member
      • Nov 2019
      • 7

      #3
      1. А подкорректировать задачу никак нельзя? Например, чтобы эти линукс-устройства сами обращались на заббикс-сервер через zabbix-agent \ snmp ?

      Смысл? сейчас костыль из - log.count работает, т.е. данные мы получаем. Что поменяется если устройства будут сами отправлять лог?
      Уже подразобрался с поведение вычисляемого итема, вполне возможно, что я откажусь от использования log.count. и буду подсчитывать прилетающие строки из лога.
      Парсинг лога делается на самом устройстве. В заббикс прилетает только необходимая строчка из лога, не весь лог.

      2. Если нет - лучше создать скрипт-парсер для большого логфайла с входными параметрами [host] [interval] и уже им отдавать результаты в заббикс-агент.
      Как я написал выше парсинг происходит на стороне агента, в заббикс падает строка необходимая, эта строка используется для другого тригера.

      3. Ну и не забыть логротейт. Парсить большие файлы - фу.
      Ротация лога настроена. Лог не прсится на стороне заббикса.

      Comment

      • wins
        Senior Member
        • Sep 2014
        • 307

        #4
        Еще раз перечитал ваше ТЗ.
        Вам достаточно графика, где можно выбрать любой удобный период и посмотреть сумму значений? Если да - на тестовом стенде поставьте zabbix 4.2 или выше, и попробовать новые графики. Можно выбрать функцию суммирования значений в датасете, временной интервал и т.д.

        Comment

        • Ivan Egorkin
          Junior Member
          • Nov 2019
          • 7

          #5
          К сожалению графика недостаточно, нужна цифра либо на дашборде либо на комплексном экране, но про 4.2 и графики прочитаю обязательно. Возможно как то и приспоссоблю.

          Comment

          Working...