Ad Widget

Collapse

Проблема с прототипами графиков

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • cardinal83
    Junior Member
    • Apr 2015
    • 18

    #1

    Проблема с прототипами графиков

    Добрый день!

    Почитал ветку Host processes monitoring-graphs LLD и решил сделать собственный мониторинг запущенных процессов (для начала по занимаемой памяти) на Windows-Серверах. Решение из вышеуказанной ветки мне не понравилось тем, что там надо использовать API, perl-скрипты и т.д. Мне же хотелось попробовать сделать все штатными средствами.
    Сделал правило обнаружения в шаблоне, написал ps-скрипт, возвращающий список процессов и занимаемой памяти в разрезе типов памяти(WorkingSet, PrivateMemory, VirtualMemory и т.д.) в JSON. Добавил в правило обнаружения прототип графика, который должен отображать по всем процессам определенный параметр, например, WorkingSet процесса. Т.е. нужен график, на котором в стэкируемом виде отображаются WorkingSet-ы всех отдисковеренных процессов. Вот тут-то и загвоздка. Насколько я понял, прототип графика привязывается к отдисковеренному элементу, в данном случае, процессу. И на нем можно отобразить разные параметры процесса. А как быть с графиком, в котором нужно отобразить определенный параметр всех отдлисковеренных элементов?

    Пример вывода дисковери-скрипта:
    Code:
    {
     "data":[
    
     { "{#REQUESTTYPE}":"WorkingSet" , "{#PROCESSNAME}":"conhost" },
     { "{#REQUESTTYPE}":"WorkingSet" , "{#PROCESSNAME}":"csrss" },
     { "{#REQUESTTYPE}":"WorkingSet" , "{#PROCESSNAME}":"DeviceDisplayObjectProvider" },
    ........................................................................
     { "{#REQUESTTYPE}":"PrivateMemorySize" , "{#PROCESSNAME}":"WmiPrvSE" },
     { "{#REQUESTTYPE}":"PrivateMemorySize" , "{#PROCESSNAME}":"zabbix_agentd" }
    
     ]
    }
    Прототип элемента данных, прототип графика, созданные элементы данных и график в аттачментах.

    В итоге график создается, но для одного, последнего процесса с типом "WorkingSet", а хотелось бы, чтобы там были все процессы. Т.е. нужна группировка в одном графике всех одинаковых параметров процессов.
    Если график создавать в шаблоне, то там нет возможности выбрать прототип элемента данных, а прототип графика создается с привязкой к элементу данных.

    Есть ли выход из данной ситуации?
    Attached Files
  • sadman
    Senior Member
    • Dec 2010
    • 1611

    #2
    Относительно самого LLD - думаю, что стоит собирать {#PROCESSNAME} и {#PROCESSID}, затем делать прототипы вида custom.process[{#PROCESSID}, MemoryType] и обслуживать их пользовательским скриптом на стороне контролируемого хоста. Скрипт должен уметь по ProcessID и MemoryType вернуть объем памяти. В противном случае svchost (тут, кстати, еще егокомандную строку надо анализировать), под которым запускается куча сервисов, будет давать искаженную картину реальности. Впрочем, если вам такая детализация не нужна, то не мучайтесь.

    А стэкирование в графике элементов данных, созданных с помощью LLD, насколько я помню, пока не реализовано. Были предложения повесить на крон скрипт, который через API дергал из базы элементы и через API же создавал графики.

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

    Comment

    • cardinal83
      Junior Member
      • Apr 2015
      • 18

      #3
      Не в курсе, есть ли на zbx-next подобный запрос о стекировании lld-элементов?

      Comment

      • sadman
        Senior Member
        • Dec 2010
        • 1611

        #4
        К сожалению, такой информации у меня нет.

        Comment

        • cardinal83
          Junior Member
          • Apr 2015
          • 18

          #5
          Я вот счас прикинул, мало того, чтобы Zabbix поддерживал такую возможность (стекирование однотипных параметров одисковеренных элементов данных), так надо и собирать эти данные по процессам в один и тот же момент времени, иначе они будут несогласованы и на графике будет некорректная картинка, например, CPU будет выходить за 100% или суммарная загрузка (вместе с простоем) не будет равна 100%. А вот как сделать, чтобы данные по всем отдискаверенным элементам собирались в один и тот же момент времени и писались в БД я не знаю. Могу предположить, что это можно сделать с помощью каких-то внешних скриптов и через API записывать в БД Zabbix. Поправьте меня, если я не прав.

          Comment

          • Jimson
            Senior Member
            • Jan 2008
            • 1327

            #6
            Вот этот пост "кроном через API создавать графики": https://www.zabbix.com/forum/showthread.php?t=26678
            Если не долистаете до 3 страницы, то вот еще ссылка:
            There have been two types of graphs in Zabbix until now: Simple graphs Custom graphs Simple ones were available for any numeric item, but could only display that one item. Custom graphs could have multiple items on them, but could only be created by users with administrator privileges. Zabbix 2.4 adds a capability to graph […]


            Короче в планах есть, каков статус этой фичи не знаю, нет времени искать в JIRA запрос. Я только одно скажу, есть классическая задача "интерфейсы устройства", такого как свич, портов скажем на 48 нормально будет. Так вот к какому месту в этой задаче прикладывать банальный стековый график и какой в этом смысл?

            Для начала нужны графики, в первую очередь графики по типу моментального отчета (температурные или... хз короче как назвать). График по интерфейсам это будет 48 горизонтальных баров, каждый бар имеет подпись - название интерфейса - и отображает входящий/исходящий трафик (минимум, максимум, текущее значение, девиацию), входящий/исходящий pps. Короче такого дизайна графиков нет в Zabbix даже близко, а следовательно обсуждаемую фичу можно применить только к "удобным" метрикам, вроде INSERT/DELETE/UPDATE запросов к базе данных и тп. Вот только большинству, мне кажется, надо "интерфейсы" смотреть.

            Comment

            • sadman
              Senior Member
              • Dec 2010
              • 1611

              #7
              Originally posted by cardinal83
              А вот как сделать, чтобы данные по всем отдискаверенным элементам собирались в один и тот же момент времени и писались в БД я не знаю. Могу предположить, что это можно сделать с помощью каких-то внешних скриптов и через API записывать в БД Zabbix.
              Обычно на этот вопрос отвечает Jimson, как мне помнится...

              Вобщем, радикально эта проблема решается путем дерганья на агенте пользовательского скрипта, который собирает данные в наиболее ограниченный промежуток времени и засылает через zabbix_sender (или его аналог на любом языке программирования - протокол несложный). Но тут вам придется решить, как синхронизировать ключи создаваемых через LLD элементов данных с теми ключами, значения которых будет засылать пользовательский скрипт. Вроде бы LLD rule тоже может быть насильно накормлено JSON-ом со стороны скрипта (Type = Zabbix trapper).

              Comment

              Working...