Ad Widget

Collapse

Структура базы данных (Database Structure)

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • zalex_ua
    Senior Member
    Zabbix Certified Trainer
    Zabbix Certified SpecialistZabbix Certified Professional
    • Oct 2009
    • 1286

    #16
    Я бы предложил создать тикет на трекере о этой просьбе, сослаться на этот топик и всем желающим проголосовать.

    Без этого шага цель точно не достижима.

    Comment

    • Sanki
      Member
      • Mar 2010
      • 46

      #17
      вот схема БД заббикс
      Attached Files

      Comment

      • zalex_ua
        Senior Member
        Zabbix Certified Trainer
        Zabbix Certified SpecialistZabbix Certified Professional
        • Oct 2009
        • 1286

        #18
        Originally posted by sanki
        вот схема БД заббикс
        Я бы не сказал что это схема БД и то что люди просят.
        Схема БД лежит в исходниках, а это модель связей между таблицами.
        Люди же просят описание схемы БД!

        Всем - будьте внимательны ибо не обозначено к какой версии эта модель связей.
        Да и не все связи здесь восстановлены.

        Comment

        • mailo
          Junior Member
          • Apr 2011
          • 9

          #19
          Как выдернуть из базы историю по итемсу х&#108

          Как выдернуть из базы историю по итемсу хоста за сутки скажем?
          То есть нужен список значение итемса по конкретному хосту за сутки?

          Comment

          • dima_dm
            Senior Member
            • Dec 2009
            • 2697

            #20
            Originally posted by mailo
            Как выдернуть из базы историю по итемсу хоста за сутки скажем?
            То есть нужен список значение итемса по конкретному хосту за сутки?
            history и history_uint история
            trends_uint и trends - тренды
            Если элемент получает значения типа float, то пишется в таблицу history, если uint, то, соответственно, history_uint.и т.д.
            select * from hosts where hostid="10160";
            Нашёл itemid для нужных мне элементов
            select description,itemid from items where hostid="10160";
            | Processor load15 | 50036 |
            | Processor load | 50037 |
            | Processor load5 | 50038 |
            Получил статистику по item
            select *,from_unixtime(clock) from history_uint where itemid="50036";

            +--------+------------+-------+----------------------+
            | itemid | clock | value | from_unixtime(clock) |

            Comment

            • bga83
              Senior Member
              • Sep 2011
              • 268

              #21
              Может немного не та тема, но задам свой вопрос все же тут.
              Ситуация такая: пишу отчет, который бы выводил информацию о том какие сервисы(триггеры) на протяжении определенного помежутка времени были недоступны, продолжительность проблемы и самое главное сколько из иэтого времени приходится на перод обслуживания. Проблема состоит в следующем: долго строится отчет, если он формируется по относительно большому числу серверов. Через режим отладки выяснил, что дольше всего выполняется запрос к базе, который по ID триггера вытаскивает информацию об относящихся к нему обслуживаниях, временных нтервалах. Запрос выглядит так:

              SELECT DISTINCT m.active_since, m.active_till, tp.*
              FROM timeperiods tp, maintenances_windows mw, maintenances m, maintenances_groups mg, maintenances_hosts mh, hosts h, hosts_groups hg, items i, functions f
              WHERE tp.timeperiodid=mw.timeperiodid
              AND mw.maintenanceid=m.maintenanceid
              AND f.itemid=i.itemid
              AND i.hostid=h.hostid
              AND f.triggerid=13122
              AND ( mg.maintenanceid=m.maintenanceid
              AND h.hostid=hg.hostid
              AND hg.groupid=mg.groupid
              OR h.hostid=mh.hostid
              AND mh.maintenanceid=m.maintenanceid );

              Вопрос в следующем: можно ли как-то уменьшить время получения подобной информации? оптимизацией запроса или еще чем-нибудь?

              Comment

              • Incher
                Member
                • Sep 2012
                • 38

                #22
                Коллеги, кто-нибудь знает, выложил ли кто-нибудь на wiki описание БД? Есть ли вообще какая-нибудь новая информация по описанию БД (кроме, того что уже обсуждалось и выложенной Sanki схемы - за нее отдельное спасибо, но хотелось бы увидеть более менее подробное словесное описание содержания и назначения таблиц и полей)?
                Очень нужно описание БД для пользовательских отчетов и доработки функционала под нужды организации. Заранее спасибо за любую помощь по данному вопросу

                Comment

                • Incher
                  Member
                  • Sep 2012
                  • 38

                  #23
                  Еще вопрос, возможно не совсем по теме. Когда открываеш какой-нибудь график, то внизу справа пишется "Данные взяты из history". Это значит, что данные берутся из таблицы history или из нескольких таблиц? Если из нескольких, то хотелось бы узнать, какие именно таблицы "участвуют" в запросах при построении графиков.

                  Comment

                  • dima_dm
                    Senior Member
                    • Dec 2009
                    • 2697

                    #24
                    Originally posted by Incher
                    Еще вопрос, возможно не совсем по теме. Когда открываеш какой-нибудь график, то внизу справа пишется "Данные взяты из history". Это значит, что данные берутся из таблицы history или из нескольких таблиц? Если из нескольких, то хотелось бы узнать, какие именно таблицы "участвуют" в запросах при построении графиков.
                    графики могут рисоваться по данным из history или trends
                    В нижнем правом углу графика пишет
                    data from history
                    data from trends

                    А в trends хранится статистика по 1 часовым интервалам value_min, value_avg, value_max.
                    num - количество снятых данных за этот часовой интервал, по которым считается максимальное, минимальное и среднее значение.
                    Code:
                    select *,from_unixtime(clock) from trends where itemid="99894";
                    +--------+------------+-----+-----------+-----------+-----------+----------------------+
                    | itemid | clock | num | value_min | value_avg | value_max | from_unixtime(clock) |
                    +--------+------------+-----+-----------+-----------+-----------+----------------------+
                    | 99894 | 1261134000 | 56 | 1.0100 | 1.1046 | 1.5500 | 2009-12-18 14:00:00 |
                    Last edited by dima_dm; 15-01-2013, 09:50.

                    Comment

                    • Incher
                      Member
                      • Sep 2012
                      • 38

                      #25
                      Originally posted by dima_dm
                      графики могут рисоваться по данным из history или trends
                      В нижнем правом углу графика пишет
                      data from history
                      data from trends

                      А в trends хранится статистика по 1 часовым интервалам value_min, value_avg, value_max.
                      num - количество снятых данных за этот часовой интервал, по которым считается максимальное, минимальное и среднее значение.
                      Code:
                      select *,from_unixtime(clock) from trends where itemid="99894";
                      +--------+------------+-----+-----------+-----------+-----------+----------------------+
                      | itemid | clock | num | value_min | value_avg | value_max | from_unixtime(clock) |
                      +--------+------------+-----+-----------+-----------+-----------+----------------------+
                      | 99894 | 1261134000 | 56 | 1.0100 | 1.1046 | 1.5500 | 2009-12-18 14:00:00 |
                      Спасибо, а вы не могли бы так же подробно рассказать о таблице history? И еще интересует такой момент, в БД кроме history есть несколько таблиц, чье название начинается с "history" (history_log, history_str, history_str_sync, history_sync, history_text, history_uint и history_uint_sync) - каково их назначение? И они (или некоторые из них) тоже используются при построении графиков?

                      Comment

                      • dima_dm
                        Senior Member
                        • Dec 2009
                        • 2697

                        #26
                        Originally posted by Incher
                        Спасибо, а вы не могли бы так же подробно рассказать о таблице history? И еще интересует такой момент, в БД кроме history есть несколько таблиц, чье название начинается с "history" (history_log, history_str, history_str_sync, history_sync, history_text, history_uint и history_uint_sync) - каково их назначение? И они (или некоторые из них) тоже используются при построении графиков?
                        В history все просто, там просто по itemid идут значения.
                        Code:
                        mysql> select *,from_unixtime(clock) from history where itemid="99894";
                        +--------+------------+--------+-----------+----------------------+
                        | itemid | clock      | value  | ns        | from_unixtime(clock) |
                        +--------+------------+--------+-----------+----------------------+
                        |  99894 | 1357722355 | 0.0100 |  10383938 | 2013-01-09 13:05:55  |
                        |  99894 | 1357722414 | 0.0000 | 178312935 | 2013-01-09 13:06:54  |
                        |  99894 | 1357722474 | 0.0000 | 630195984 | 2013-01-09 13:07:54  |
                        |  99894 | 1357722534 | 0.0000 | 857241107 | 2013-01-09 13:08:54  |
                        ns - это наносекунды, когда получено значение. Т.к. в clock время указано с точностью до секунды. Нужно, чтобы не перепутать порядок поступления данных в пределах 1-й секунды, когда это критично.

                        item может быть разных типов Числовой (Целое) и Числовой с плавающей точкой, текст и т.д. для каждого типа своя таблица.
                        history_uint - Числовой (Целое)
                        Таблицы *_sync используются для синхронизации данных в Распределенном мониторинге
                        Очевидно, что для построения графиков могут использоваться только числовые значения. Т.е. таблицы
                        history и history_uint.
                        Last edited by dima_dm; 17-01-2013, 09:52. Reason: добавил описание поля ns

                        Comment

                        • vitiosa
                          Junior Member
                          • Jan 2013
                          • 1

                          #27
                          привязка графиков

                          Уважаемые Гуру, вопрос по структуре - не могу найти, как связать конкретное значение graphid из таблицы graphs с хостом из таблицы hosts, мне нужно наполнить отдельные комплексные екраны графиками, в зависимости от инв. данных хоста ....

                          Comment

                          • dima_dm
                            Senior Member
                            • Dec 2009
                            • 2697

                            #28
                            Originally posted by vitiosa
                            Уважаемые Гуру, вопрос по структуре - не могу найти, как связать конкретное значение graphid из таблицы graphs с хостом из таблицы hosts, мне нужно наполнить отдельные комплексные екраны графиками, в зависимости от инв. данных хоста ....
                            Для получения списка графиков у хоста c hostid=10049
                            Делаем такой запрос
                            Code:
                            SELECT DISTINCT g.*,i.hostid FROM graphs g,graphs_items gi,items i,hosts h WHERE (i.hostid IN ('10049')) AND gi.graphid=g.graphid AND i.itemid=gi.itemid AND g.graphid=gi.graphid AND h.hostid=i.hostid AND h.status<>3 AND ( (g.flags IN ('0','4')) );
                            Last edited by dima_dm; 25-02-2013, 10:09.

                            Comment

                            Working...