Zabbix и счетчики производительности (perf counters)

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

Стоит начать с того, что имя счетчика пишется в двойных кавычках, начиная с бэкслэша (\). В точности так, как выводит его команда typeperf -qx. Т.е. правильный вид для мониторинга загрузки всех ядер CPU будет выглядеть примерно так:

perf_counter["\Processor(_Total)\% Processor Time"]

Все бы ничего, но при вводе такого счетчика и довольных мыслях («ща всё замониторю с красивыми графиками») мы получаем ответ от заббикса в виде Not supported. Начинаем долго и нудно гуглить по этому вопросу и никак не натыкаемся на ответ. В качестве одной из предполагаемых причин такого поведения может быть запуск 32-битного агента на 64-битном хосте. Но даже при запуске правильного, 64-битного клиента, мы не получаем удовлетворения и видим Not supported.

А все потому, что по умолчанию, у вновь создаваемых элементов (item) мониторинга выставлен тип информации (type of information) — numeric(unsigned). Казалось бы, ничего в этом страшного нет. Загрузка процессора не может быть отрицательной. Так и есть. Но почему-то, разработчики заббикса посчитали, что под понятие numeric(unsigned) попадают ТОЛЬКО целые числа. О чем, в принципе, они честно сообщают в докахNumeric (unsigned) — 64bit unsigned integer. Выставляем numeric(float) и тихо радуемся работающему мониторингу.

Zabbix и счетчики производительности (perf counters): 8 комментариев

  1. Добрый день!
    Мне этот способ не помог. Странно то, что у меня очень много Windows-серверов на мониторинге и небольшая часть из них не реагирует на это ключ, остальные работают нормально. Что я только уже не делал. Идеи у меня закончились.
    Может есть ещё какие-нибудь нюансы по данной проблеме?

    1. Здравствуйте!
      Какой именно ключ не помог? Загрузка процессора? Если используется локализованная винда (русская или любая другая), то ключ в таком виде работать не будет, т.к. его нет в системе. Надо подбирать вместо этого цифровое значение ключа. Например, ключ для получения процента использования файла подкачки выглядит так:
      perf_counter[\700(_Total)\702]

      1. Да, Windows на русском.
        Использую вот этот ключ:
        perf_counter[«\Processor(_Total)\% Processor Time»]
        он не работает.
        Пробовал вот этот:
        perf_counter[\Процессор(_Total)\% общей загруженности процессоров]
        тоже не работает.
        Пробовал такой:
        perf_counter[\238(_Total)\240]
        тоже не поддерживается.
        Во всех трёх случаях пишет: «Not supported».
        Причём, я непосредственно на сервере, где нужно мониторить нагрузку на CPU из командой строки вытянул счётчики с помощью команды:
        lodctr /s:perfcount.txt
        и ориентировался при построении ключа для Zabbix именно по ним.
        Даже не знаю что делать.

        1. Для русской винды надо использовать только цифровое значение. Zabbix далеко не сразу пытается проверять «Not supported» счетчики после их изменения. Самый верный вариант — перезапустить сервис заббикса и агент. Опять же, можно попробовать включить дебаг-лог — он может сказать что именно ему не нравится.
          Я встречал такие случаи, когда заббикс писал «Not supported» на часть айтемов на разных серверах, а на следующий день уже все работало. Можно попробовать просто оставить правильное значение для счетчика (цифровое) и подождать.

          1. Согласен, просто понять бы какое всё-таки правильное значение. Не подскажете правильное числовое значение для общей нагрузки процессора, аналог: perf_counter[«\Processor(_Total)\% Processor Time»]
            Заранее спасибо!

          2. Найдено решение.
            Для локализованной русской версии Windows аналогом ключа:
            perf_counter[«\Processor(_Total)\% Processor Time»]
            является ключ:
            perf_counter[\Процессор(_Total)\Процент времени бездействия]

            Надеюсь кому-то типа меня поможет не так долго мучаться с проблемой.
            Всем большое спасибо за помощь!

Добавить комментарий для Dmitry Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *