Ad Widget

Collapse

Мониторинг размера базы данных MySQL

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • NoOneIsPerfect
    Member
    • Feb 2015
    • 37

    #1

    Мониторинг размера базы данных MySQL

    Настроил мониторинг mysql через userparameter. Получаю общие данные по серверу. Вижу, что в настройках userparameter_mysql.conf есть ключ для мониторинга размера баз данных. Как правильно прописать ключ?
    Пробовал mysql.size[zabbix] / mysql.size[zabbix,all,all] / mysql.size[zabbix,,]. Получаю ошибку "Zabbix server:mysql.size[zabbix,,]" changed: Received value [sh: 1: [[: not foundsh: 1: zabbix: not foundsh: 1: [[: not foundsh: 1: : Permission denied252170558] is not suitable for value type [Numeric (unsigned)] and data type [Decimal]
    Что делаю не так?
  • lpkone
    Member
    • May 2015
    • 56

    #2
    Через значения в квадратных скобках вы передаете входные параметры скрипту, который прописан у вас в userParameter. Смотрите скрипт, и думайте что туда следует передавать.

    Comment

    • NoOneIsPerfect
      Member
      • Feb 2015
      • 37

      #3
      Скрипт стандартный, тот что идет вместе с zabbix-agent. Цитирую:
      # Flexible parameter to determine database or table size. On the frontend side, use keys like mysql.size[zabbix,history,data].
      # Key syntax is mysql.size[<database>,<table>,<type>].
      # Database may be a database name or "all". Default is "all".
      # Table may be a table name or "all". Default is "all".
      # Type may be "data", "index", "free" or "both". Both is a sum of data and index. Default is "both".
      # Database is mandatory if a table is specified. Type may be specified always.
      # Returns value in bytes.
      # 'sum' on data_length or index_length alone needed when we are getting this information for whole database instead of a single table
      UserParameter=mysql.size[*],echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema='$1'")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name='$2'");" | HOME=/var/lib/zabbix mysql -N

      Понять почему возвращается not found/permission denied не могу

      Comment

      • lpkone
        Member
        • May 2015
        • 56

        #4
        cat /etc/passwd | grep zabbix
        /sbin/nologin или /bin/bash?

        Comment

        • NoOneIsPerfect
          Member
          • Feb 2015
          • 37

          #5
          /bin/false

          Добавлю, что другие проверки mysql, находящиеся в том же файле, работают. Например:
          UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix mysql -N | awk '{print $$2}'

          Comment

          • sadman
            Senior Member
            • Dec 2010
            • 1611

            #6
            Сделайте zabbix_agentd -t "mysql.size[...]" и посмотрите - не жрет ли агент содержимое ключа.

            Comment

            • aib
              Senior Member
              • Jan 2014
              • 1615

              #7
              У меня пользователь zabbix имеет другой шелл
              Code:
              # cat /etc/passwd | grep zabbix
              zabbix:x:498:498:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
              И результаты возвращаются
              Code:
              # zabbix_agentd -t mysql.status[Bytes_received]
              mysql.status[Bytes_received]                  [t|47467126747]
              Code:
              # zabbix_agentd -t mysql.size[zabbix,,]
              mysql.size[zabbix,,]                          [t|27238650850]
              Sincerely yours,
              Aleksey

              Comment

              • NoOneIsPerfect
                Member
                • Feb 2015
                • 37

                #8
                Из консоли вывод такой:

                # zabbix_agentd -t mysql.size[zabbix,,]
                mysql.size[zabbix,,] [t|sh: 1: [[: not found
                sh: 1: zabbix: not found
                sh: 1: [[: not found
                sh: 1: : Permission denied
                278696254]

                Что характерно попробовал на centos - там запрос работает. Проблема с инсталляцией на ubuntu.
                Каких прав может не хватать?

                Comment

                • sadman
                  Senior Member
                  • Dec 2010
                  • 1611

                  #9
                  [[ - это расширенный test в bash, в sh такого нет, как помнится. Копайте в сторону интерпретатора, которому скармливаете скрипт из UserParameter.

                  Comment

                  • aib
                    Senior Member
                    • Jan 2014
                    • 1615

                    #10
                    Originally posted by NoOneIsPerfect
                    Из консоли вывод такой:

                    # zabbix_agentd -t mysql.size[zabbix,,]
                    mysql.size[zabbix,,] [t|sh: 1: [[: not found
                    sh: 1: zabbix: not found
                    sh: 1: [[: not found
                    sh: 1: : Permission denied
                    278696254]

                    Что характерно попробовал на centos - там запрос работает. Проблема с инсталляцией на ubuntu.
                    Каких прав может не хватать?
                    Вы сравните на CentOS и на Ubuntu - какой шелл настроен для пользователя zabbix.
                    Sincerely yours,
                    Aleksey

                    Comment

                    • NoOneIsPerfect
                      Member
                      • Feb 2015
                      • 37

                      #11
                      На centos /sbin/nologin. Как уже писал выше на ubuntu /bin/false.
                      Смена на /bin/bash ничего не меняет. Да и сомневаюсь, ведь все другие скрипты с /bin/false успешно работают.
                      Какие еще есть идеи?

                      Comment

                      • Jimson
                        Senior Member
                        • Jan 2008
                        • 1327

                        #12
                        линк просто сделать надо, в FreeBSD именно так и сделано
                        test=`which test` && test -n "$test" && ln $test `dirname $test`/[

                        Comment

                        • sadman
                          Senior Member
                          • Dec 2010
                          • 1611

                          #13
                          Остается дебажить.

                          Фигачите код в test.sh, раскладываете по строчкам, даете в $1, $2 какие-нить значения, и... как там... su -u zabbix -c './test.sh' что ли.

                          Comment

                          • NoOneIsPerfect
                            Member
                            • Feb 2015
                            • 37

                            #14
                            Originally posted by jimson
                            линк просто сделать надо, в freebsd именно так и сделано
                            test=`which test` && test -n "$test" && ln $test `dirname $test`/[
                            Уже сделано

                            Comment

                            • Jimson
                              Senior Member
                              • Jan 2008
                              • 1327

                              #15
                              вставь в конвеер tee /tmp/userparms.log, перед mysql, и посмотри что ты скармливаешь mysql-у
                              а еще к этим всяким echo добавь 2>&1 что бы увидеть заодно ругань в логе

                              Comment

                              Working...