Ad Widget

Collapse

мониторинг статистики блочных устройст&#

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • daevy
    Member
    • Apr 2009
    • 37

    #1

    мониторинг статистики блочных устройст&#

    Всем привет и доброго времени суток!
    Что означает величина возвращаемая при запросе vfs.dev.read/write[device,,] ?
    Если это sectors то почему, явное указание типа ",sectors" возвращает ZBX_NOTSUPPORTED?

    Вопрос к разработчикам, откуда агент берет значения для vfs.dev.*? Если из /proc/diskstats то было бы круто добавить остальные (временнЫе) параметры.
  • dima_dm
    Senior Member
    • Dec 2009
    • 2697

    #2
    Я так получаю дисковую статистику.

    Comment

    • daevy
      Member
      • Apr 2009
      • 37

      #3
      да я тоже за полчаса написал свой скрипт который обсчитывает /proc/diskstats, но сделал только пока исключительно lvm.
      тот вариант который вы предлагаете я видел, но он мне не нравится в силу использования awk (лучше заменить его на cut).

      ИМХО было бы лучше если это было бы написано в агенте (реализация на си будет быстрее), и не придется плодить дополнительной настройки в виде скрипта)))

      и всё таки изначальный вопрос остается в силе)))

      Comment

      • dima_dm
        Senior Member
        • Dec 2009
        • 2697

        #4
        Ответ на ваш вопрос
        http://www.zabbix.com/documentation/...l/config/items
        vfs.dev.read/write[device,sectors,avg1] - так писали?

        Comment

        • daevy
          Member
          • Apr 2009
          • 37

          #5
          +

          > vfs.dev.read/write[device,sectors,avg1] - так писали?

          да, пробовал так писать, но как я понял из раздела с доками, параметр sectors в явном виде не поддерживается, а возвращается только при опущенном значении "типа", т.е. при
          vfs.dev.read/write[device,,avg1]

          P.S. read/write не стоит воспринимать буквально)))

          Comment

          • abone
            Junior Member
            • Sep 2011
            • 2

            #6
            Возможно я не в тему скажу, но вы случаем не прекомпилированные агенты используете?

            У меня на Solaris с прекомпилированным агентом 1.8.5 был фокус. Он заявлял, что cpu.util не поддерживается. После сборки из исходников 1.8.7 все заработало. Есть подозрение, что бинарники как-то хитро собирают.

            Comment

            • daevy
              Member
              • Apr 2009
              • 37

              #7
              +

              агенты собираются из исходников (ос gentoo linux)
              Last edited by daevy; 13-10-2011, 13:00.

              Comment

              • andrew.ivanov
                Junior Member
                • Nov 2011
                • 3

                #8
                Originally posted by dima_dm
                Я так получаю дисковую статистику.
                http://www.zabbix.com/forum/showthread.php?t=19198
                У такого получения большой минус -- нельзя посчитать задержку, для вычисления которой надо знать предыдущие значения. Это в дополнение к тому, что данные каждый раз должны получаться одним чтением из файла, а не двумя (чтобы время задержки было про указанное количество чтений, а не случайное).

                Например, среднюю задержку чтения между двумя вызовами item:
                rtdiff = rtime.now - rtime.last
                rcdiff = rcount.now - rcount.last
                rlatency = rtdiff / rcdiff

                Для нагруженных SSD-дисков количество IOPS значения не имеет, потому что измеряется десятками тысяч. Значение имеет задержка чтения. Начала расти задержка чтения, значит начались тормоза. Для шпиндельных дисков производительность упирается в IOPS, поэтому там можно считать только IOPS.

                Comment

                • dima_dm
                  Senior Member
                  • Dec 2009
                  • 2697

                  #9
                  Originally posted by andrew.ivanov
                  У такого получения большой минус -- нельзя посчитать задержку
                  Не проблема, можно использовать zabbix_sender, чтобы получать все значения в один момент времени. И Вычисляемые элементы данных, чтобы посчитать необходимые значения.
                  http://www.zabbix.com/documentation/...l/config/items -> Вычисляемые элементы данных

                  Comment

                  • andrew.ivanov
                    Junior Member
                    • Nov 2011
                    • 3

                    #10
                    Originally posted by dima_dm
                    Не проблема, можно использовать zabbix_sender, чтобы получать все значения в один момент времени. И Вычисляемые элементы данных, чтобы посчитать необходимые значения.
                    http://www.zabbix.com/documentation/...l/config/items -> Вычисляемые элементы данных
                    Из-за отсутствия атомарности обновлений и вычислений результаты вычислений могут быть не те, что должны быть.

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

                    Спасибо за отсылку к zabbix_sender.
                    Last edited by andrew.ivanov; 03-11-2011, 15:44.

                    Comment

                    • andrew.ivanov
                      Junior Member
                      • Nov 2011
                      • 3

                      #11
                      Originally posted by dima_dm
                      Не проблема, ... Вычисляемые элементы данных, чтобы посчитать необходимые значения.
                      http://www.zabbix.com/documentation/...l/config/items -> Вычисляемые элементы данных
                      Всё-таки это проблема =) У триггеров и вычисляемых полей нет условных операторов if или ?, поэтому невозможно проверить на 0 перед делением. Соответственно, если делитель 0 (не было записей, например), получается ошибка Division by zero и итем помечается "Not supported".

                      Comment

                      • dima_dm
                        Senior Member
                        • Dec 2009
                        • 2697

                        #12
                        Originally posted by andrew.ivanov
                        Всё-таки это проблема =) У триггеров и вычисляемых полей нет условных операторов if или ?, поэтому невозможно проверить на 0 перед делением. Соответственно, если делитель 0 (не было записей, например), получается ошибка Division by zero и итем помечается "Not supported".
                        Предлагаю следующий вариант:
                        Написать скрипт, который получит дисковою статистику из /proc/diskstats, сохранит предыдущие результаты во временном файле, вычислит всё что нужно со всеми проверками и отправит результат через zabbix_sender с ключём -i (посылать сразу много значений за один вызов).

                        Comment

                        • dotneft
                          Senior Member
                          • Nov 2008
                          • 699

                          #13
                          Пример сбора статистики:

                          Code:
                          # Мониторинг дисковой подсистемы
                          UserParameter=custom.vfs.dev.read.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$4}'
                          UserParameter=custom.vfs.dev.read.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$7}'
                          UserParameter=custom.vfs.dev.write.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$8}'
                          UserParameter=custom.vfs.dev.write.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$11}'
                          UserParameter=custom.vfs.dev.io.active[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$12}'
                          UserParameter=custom.vfs.dev.io.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$13}'
                          UserParameter=custom.vfs.dev.read.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$6}'
                          UserParameter=custom.vfs.dev.write.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$10}'

                          Comment

                          • dima_dm
                            Senior Member
                            • Dec 2009
                            • 2697

                            #14
                            Originally posted by dotneft
                            Пример сбора статистики:
                            Мы с этого начинали обсуждение, 2-й пост

                            Comment

                            • dotneft
                              Senior Member
                              • Nov 2008
                              • 699

                              #15
                              Originally posted by dima_dm
                              Мы с этого начинали обсуждение, 2-й пост
                              точно... почему то не заметил

                              Comment

                              Working...