Мониторинг баз данных ХостТрекером

    Сегодня мы бы хотели написать об очередной фиче нашего сервиса — мониторинге баз данных.
    Существует множество различных сервисов и метрик, которые помогают собирать информацию о количествах посещений сайта, сумме продаж и других важных для бизнеса показателей. Но если нужно эти показатели как-то между собой сравнить? Или же возникнет необходимость проверять более «технические» значения, например, прирост базы?

    image

    ХостТрекер предлагает функцию для решения подобных задач — мониторинг БД.



    Настройка запроса


    Эта функция позволяет при каждой проверке исполнять определенный запрос к базе данных, и заданным образом обрабатывать ее результат. Если запрос не задать – будет тестироваться возможность подключения к базе. Самое интересное – возможность с заданным интервалом исполнять определенный запрос, сохранять и сравнивать результат. Запрос может быть любой – от простых выборок до регулярных апдейтов таблиц, запуска процедур (вместо планировщика), разнообразных сравнений и логических операций. Единственное ограничение – он должен выполняться за 30 секунд, иначе будет возвращена ошибка (таймаут). Каким образом эти данные можно анализировать?

    image

    Рекомендуется писать такие запросы, которые возвращают нужное значение в первой колонке первой строки результата. Именно это значение можно анализировать. Для запросов типа UPDATE, INSERT, DELETE фиксируется количество обработанных строк.

    Например, график результата выполнения DELETE по определенным параметрам:

    image

    Каждый результат запроса записывается, последний показывается в таблице заданий на интерфейсе. Если значение числовое – по нему строится график и можно отследить его поведение. Есть возможность выбрать условия для сравнения этого результата – оно может быть равно/не равно определенному значению, превышать его, находиться в заданном диапазоне или вне его.
    Если условие не выполнено, или же запрос не прошел по причине таймаута, или же нет связи с БД – Вам придет оповещение (напомним, ХостТрекер поддерживает СМС, E-mail, Skype, Gtalk, голосовой звонок).

    Пример использования


    Сценарий для отслеживания размера файлов БД и получения уведомлений при достижении определенного критического значения.
    1. Пишем запрос чтобы вытащить нужные нам данные о свободном месте в табличном пространстве:
    SELECT
    convert(DECIMAL(12,2),round(sysfile.size/128.000,2)) AS 'FileSize/mb'
    , convert(DECIMAL(12,2),round(fileproperty(sysfile.name,'SpaceUsed')/128.000,2))
    AS 'Used/mb'
    , convert(DECIMAL(12,2),round((sysfile.size-fileproperty(sysfile.name,'SpaceUsed'))/128.000,2))
    AS 'Free/mb'
    , filegroup.groupname AS 'File-group'
    , sysfile.[name],sysfile.[filename]
    FROM dbo.sysfiles sysfile (NOLOCK)
    inner join dbo.sysfilegroups filegroup (NOLOCK) ON filegroup.groupid =
    sysfile.groupid
    UNION ALL
    SELECT
    convert(DECIMAL(12,2),round(sysfile.size/128.000,2)) AS 'FileSize/mb'
    , convert(DECIMAL(12,2),round(fileproperty(sysfile.name,'SpaceUsed')/128.000,2))
    AS 'Used/mb'
    , convert(DECIMAL(12,2),round((sysfile.size-fileproperty(sysfile.name,'SpaceUsed'))/128.000,2))
    AS 'Free/mb'
    , (CASE WHEN sysfile.groupid = 0 THEN 'Log' END) AS 'File-group'
    , sysfile.[name],sysfile.[filename]
    FROM dbo.sysfiles sysfile (NOLOCK) WHERE groupid = 0
    ORDER BY [File-group],sysfile.[name]

    2. Получаем такую картинку:
    image
    3. Выбираем нужные параметры:

    Результат запроса — «значение в первой колонке первой строки»

    Проверка результата — «меньше, чем» и вводим в поле значения «1000».

    Результат — если лог файл превысит 1 Гб, мы получим оповещение. Кроме того, можно просмотреть историю — как быстро и когда именно наблюдается прирост.

    Настройка мониторинга


    image

    При настройке, необходимо задать адрес сервера, порт, название базы, логин и пароль пользователя, под которым будет исполняться запрос. Строго рекомендуется создать отдельного пользователя с ограниченными правами, на всякий случай. И в то же время не забыть дать ему права на те действия, которые ему предполагается совершать. Также необходимо добавить адреса серверов ХостТрекера, откуда будут проводиться проверки, в белый список файрвола и сервера БД, чтобы обеспечить доступ к базе. Адреса указаны тут же, они постоянные.

    ХостТрекер
    Сервис мониторинга доступности сайтов
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 7

      +2
      Дали идею что добавить в заббикс. Пасибо.
        0
        так вроде как уже есть

        p.s. пробовал, не понравилось)))
        +1
        Идея не плохая, но я бы побоялся открывать доступ в БД извне, даже если доступ ограничен файрволом только для определенного IP. У меня в инфраструктуре белый IP адрес имеют только фронтенд прокси и все.
        Может стоит подумать о премиум фиче в виде VPN внутрь инфраструктуры? Хотя это сложно реализуемо и настраиваемо. Другой вариант использовать агенты, которые отправляют информацию вам изнутри, его например использует NewRelic.
          0
          Есть такие идеи. Пока это удобное решение, в первую очередь, для веб сайтов с инфраструктурой попроще. Касательно безопасности — при правильной настройке доступ разрешается только для двух адресов и одного пользователя с ограниченными правами. Все запросы с нашей стороны также логируются. О безопасности нашего сервиса, наверное, необходимо написать отдельную статью.
          0
          Стремный сервис, давать кому-то снаружи доступ к базе. Написать простенькую страничку, которая возвращает нужное число на своей стороне и просто дергать эту страничку имхо правильнее. По-моему бесполезный сервис
            0
            Вариант со страничкой вполне работает. Сейчас у нас есть функция — контроль ключевого слова. Например у себя на странице вы выдаете отчет внутренним серисам. К примеру в таком виде:

            sql one: ok
            smtp: ok
            data storage: Error
            sql backup: ok

            Если вы натравите таску на слово «Error». То для приведенной страниы получите уведомление «DOWN: Data storage».

            Ну следующим этапом, мы хотим добавить функционал по парсингу страниц, чтобы можно было кроме статусов, вытягивать и сохрянять числовые данные.
              0
              Ну да, было бы хорошо, чтобы можно было возвращать просто число, и вы бы хранили именно число и строили график по этим числам в отчете.

          Only users with full accounts can post comments. Log in, please.