Ad Widget

Collapse

мониторинг размера таблицы базы mysql

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Nsk_sb
    Junior Member
    • Jun 2018
    • 1

    #1

    мониторинг размера таблицы базы mysql

    добрый день.
    можно ли средствами zabbix вывести на мониторинг размер определенной таблицы базы mysql?
    заранее всем спасибо
  • teddy
    Senior Member
    • Dec 2017
    • 234

    #2
    Originally posted by Nsk_sb
    добрый день.
    можно ли средствами zabbix вывести на мониторинг размер определенной таблицы базы mysql?
    заранее всем спасибо
    установить агента. открыть порты. агентом запускать скрипты sql. в скрипте получать что надо и чтоб ответ был одно число. тонкость только в правах - что от имени кого запускать. но это решаемо. подводный камень только один = скрипт должен работать быстро - потому размер(ы) брать из системных данных а не считать сложную математику.

    я так мониторю оракл - если интресно могу выслать шаблон+скрипты как образец. поменять запросы на mysql-ные. на самом деле ничего сложного

    Comment

    • kernbug
      Senior Member
      • Feb 2013
      • 330

      #3
      Originally posted by teddy

      установить агента. открыть порты. агентом запускать скрипты sql. в скрипте получать что надо и чтоб ответ был одно число. тонкость только в правах - что от имени кого запускать. но это решаемо. подводный камень только один = скрипт должен работать быстро - потому размер(ы) брать из системных данных а не считать сложную математику.

      я так мониторю оракл - если интресно могу выслать шаблон+скрипты как образец. поменять запросы на mysql-ные. на самом деле ничего сложного
      Здравствуйте, сложный вариант. Oracle прекрасно мониторится через ODBC прямыми запросами.

      1. Настроить ODBC (аккуратнее с Percona если на нем БД Zabbix, mysql-connector поломан разработчиками в 5.6/5.7) https://www.zabbix.com/documentation...s/odbc_checks;
      2. Запросить размер необходимой таблицы через information_schema:
      Code:
       SELECT       table_name AS `Table`,       round(((data_length + index_length) / 1024 / 1024), 2) `Размер в Мб(пример, для Zabbix не требуется доп. поле)`   FROM information_schema.TABLES   WHERE table_schema = "$DB_NAME"      AND table_name = "$TABLE_NAME";
      3. Добавить тригеры, графики и т.д.

      Comment

      • ableev
        Senior Member
        Zabbix Certified Specialist
        • Oct 2012
        • 276

        #4
        В стандартном шаблоне MySQL (и user parameter агента) есть такое:
        Code:
        [FONT=courier new]# 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[/FONT]
        То есть можно ничего не придумывать и использовать этот конфиг и этот ключ (mysql.size).
        Не забудьте .my.cnf положить в хоум заббикса (он может отличаться)

        Comment

        • kernbug
          Senior Member
          • Feb 2013
          • 330

          #5
          Originally posted by ableev
          То есть можно ничего не придумывать и использовать этот конфиг и этот ключ (mysql.size).
          Не забудьте .my.cnf положить в хоум заббикса (он может отличаться)
          Решает одну конкретную проблему, если таким образом мониторить все необходимые данные из базы, то я бы поспорил на тему правильности подобного решения.

          Comment

          • ableev
            Senior Member
            Zabbix Certified Specialist
            • Oct 2012
            • 276

            #6
            Originally posted by kernbug
            Решает одну конкретную проблему, если таким образом мониторить все необходимые данные из базы, то я бы поспорил на тему правильности подобного решения.
            Можно спорить сколько угодно, задача была описана ясно "можно ли средствами zabbix вывести на мониторинг размер определенной таблицы базы mysql?", вот прям в дефолтном наборе или же на share.zabbix.com – это есть, задачу оно решит.

            Comment

            Working...