Ad Widget

Collapse

Мониторинг БД - долгие запросы

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • jukka413
    Junior Member
    • Oct 2021
    • 5

    #1

    Мониторинг БД - долгие запросы

    Доброго времени суток!

    Так вышло, что заббиксом у нас мониторятся многие вещи в разных БД (в основном Oracle). То есть нужно в БД отправлять абсолютно разнообразные запросы и получать ответ. Некоторые запросы выполняются по 10-15 минут.

    Сейчас мы переходим с zabbix 4 на zabbix 5. На 4 версии у нас есть некая самописная штука, которая умеет держать соединение с БД и внутри этого соединения кидает sql-запросы. Но абсолютно не понятно как она устроена внутри и как будет работать на новых версиях заббикса и серверов. Да и в целом если отвалится - починить мы не сможем.

    Вопрос - может кто-то подскажет, бест практис для работы с такими вот долгими запросами из заббикса? Чтобы так же соединение с БД держалось, а не открывать и закрывать его постоянно. Zabbix-agent2 умеет держать соединение, но у него максимальный таймаут - 30 секунд.
  • Alex_UUU
    Senior Member
    • Dec 2018
    • 541

    #2
    Погоди, тут вроде две задачи появляются: таймаут заббикса (максимум 30 секунд) и коннект к БД.
    Вторая решается обвязкой.
    А первая - запускай скрипт как system.run с параметром nowait
    Выхлоп записывай куда надо (хоть в файл) а второй ЭД уже будет значения в заббикс принимать.
    Или делай трапперами.

    Comment


    • jukka413
      jukka413 commented
      Editing a comment
      По таймауту примерно понятно, спасибо.
      А что есть обвязка?
      ЭД - элемент данных?)
  • Alex_UUU
    Senior Member
    • Dec 2018
    • 541

    #3
    ЭД - да, элемент данных.
    Под обвязкой понимаю какой-то свой скрипт.

    Например, делаем
    1. ЭД system.run[mysql -uzabbix -B -N -e "select * from mybd" > /tmp/mybd.txt,nowait]
    Это длительный запрос. При этом в заббиксе он запустится, ты получишь 1Ю если Ок.
    2. ЭД system.run[cat /tmp/mybd.txt]
    Тут уже получаешь результаты выборки, анализируй, вешай триггеры и т.д.
    Да, они будут рассинхронизированы, и вторым ЭД можешь получить предыдущие данные, но поигравшись со временем можно найти некритическую задержку при аварии.

    Comment


    • jukka413
      jukka413 commented
      Editing a comment
      Спасибо за ответ. Таким запросом соединение будет каждый раз создаваться новое - увеличение загрузки базы. В общем-то, видимо, без своих каких-то костылей не обойтись 8( То есть придется писать что-то, что будет держать соединение и делать запросы и его уже связывать с заббикс. Эх, я надеялся, что есть какое-то простое решение, поэтому я не могу его нагуглить)
  • Alex_UUU
    Senior Member
    • Dec 2018
    • 541

    #4
    А смысл держать постоянный коннект к БД? тамочень критично по коннектам? Даже если какое-то решение прстоянно держит коннект, то к нему коннектиться надо, а в решении - проверять есть ли коннект и т.д и т.п.

    Comment

    Working...