Мониторинг Субд Firebird С Помощью Zabbix

Лет 20 назад была установлена СУБД Firebird, если не ошибаюсь, версии 1.0.3, на сегодняшний день база данных еще жива и нужна, ее размер превысил 30Гб, что по сегодняшним меркам очень мало, но основной рост базы данных произошло в начале века.

При повсеместном внедрении средств мониторинга хотелось взять минимальную статистику и определить производительность СУБД и самой базы данных.

Для мониторинга я использую Zabbix, установленный на Ubuntu 20.04 LTS, а сама СУБД находится на виртуальной машине с Windows 2008 Server. Версии, на которых использовался описанный ниже метод мониторинга, для СУБД Firebird 2.5.9, версия Zabbix 6.0. Но думаю, что и с другими версиями проблем быть не должно.

Данная статья не преследует цели описать процесс установки СУБД Firebird, кстати, он очень простой, или средства мониторинга Zabbix, данная статья покажет, как за минимальное время можно «запустить» СУБД Firebird в Zabbix, получать необходимые данные для мониторинга и реагирования на сбои.

Первое, что вам нужно сделать, это вспомнить об isql.exe, который на самом деле является CLI для FB. Был написан небольшой скрипт, извлекающий данные из заранее подготовленного представления МОНИТОРИНГ, которое в свою очередь собирает данные из таблиц мониторинга СУБД.

  
  
  
   

CREATE OR ALTER VIEW MONITORING( "Database_Name", "Page_Size", "ODS_Version", "Oldest_Tr", "Oldest_Active_Tr", "Oldest_Snapshot_Tr", "Next_Tr", "Page_Buffers", "SQL_Dialect", "Shutdown_Mode", "Sweep_Interval", "Read_Only", "Forced_Writes", "Reserve_Space", "Created_At", "Pages", "Size_MB", "Backup_State", "Nonindexed_Reads", "Indexed_Reads", "Records_Inserted", "Records_Updated", "Records_Deleted", "Records_Backed_Out", "Records_Purged", "Records_Expunged", "Page_Reads", "Page_Writes", "Page_Fetches", "Page_Marks", "Connections", "Stat group") AS SELECT db.mon$database_name, db.mon$page_size, db.mon$ods_major || '.

' || db.mon$ods_minor, db.mon$oldest_transaction, db.mon$oldest_active, db.mon$oldest_snapshot, db.mon$next_transaction, db.mon$page_buffers, db.mon$sql_dialect, db.mon$shutdown_mode, db.mon$sweep_interval, db.mon$read_only, db.mon$forced_writes, db.mon$reserve_space, db.mon$creation_date, db.mon$pages, cast((db.mon$pages * db.mon$page_size / 1024.00 / 1024.00) as numeric(18,2)), db.mon$backup_state, r.mon$record_seq_reads, r.mon$record_idx_reads, r.mon$record_inserts, r.mon$record_updates, r.mon$record_deletes, r.mon$record_backouts, r.mon$record_purges, r.mon$record_expunges, io.mon$page_reads, io.mon$page_writes, io.mon$page_fetches, io.mon$page_marks, (select count(*) from mon$attachments), r.mon$stat_group FROM mon$database db left join mon$record_stats r on (db.mon$stat_id = r.mon$stat_id) left join mon$io_stats io on (db.mon$stat_id = io.mon$stat_id)

Скрипт isql.cmd, запрашивающий данные из СУБД, выглядит так:

C:\Program Files\Firebird\Firebird_2_5\bin\isql.exe" -q -i "C:\zabbix\isql.sql

И сам SQL-запрос isql.sql, который «скармливается» isql.exe вот так:

CONNECT 'localhost:employee' user 'SYSDBA' password 'masterkey'; SET list on; SELECT * FROM MONITORING; EXIT;

Этот скрипт примечателен только выражением «SET list on», которое еще больше упрощает разбор данных с помощью регулярных выражений, т.к.

предоставляет данные в виде списка, а не таблицы.

В результате после запуска скрипта мы получаем данные, предоставленные СУБД, а точнее строку заранее подготовленного представления:

Мониторинг СУБД Firebird с помощью Zabbix

Результат isql.exe Теперь эти данные нужно перенести в Zabbix. Передавать будем с помощью файла конфигурации агента, а именно параметра UserParameter, он выглядит примерно так:

UserParameter=FirebirdData,C:\zabbix\isql.cmd

Когда агент запущен, сервер Zabbix сможет получать и обрабатывать эти данные.

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

Создаем новый шаблон и не забываем привязать этот шаблон к узлу, на котором находится СУБД:

Мониторинг СУБД Firebird с помощью Zabbix

Создать шаблон И добавляем элементы данных, которых может быть много, основные я представил на рисунке ниже, почти все они созданы по одному и тому же образу:

Мониторинг СУБД Firebird с помощью Zabbix

Список готовых элементов данных Основным элементом данных, от которого зависят все остальные элементы, является FirebirdData, это текст, который передает агент Zabbix:

Мониторинг СУБД Firebird с помощью Zabbix

?Элемент данных, содержащий таблицу, подлежащую анализу Все остальные элементы данных являются зависимыми данными, которые собирают информацию с помощью регулярных выражений, например количество добавленных записей:

Мониторинг СУБД Firebird с помощью Zabbix

?Элемент данных

Мониторинг СУБД Firebird с помощью Zabbix

Предварительная обработка элементов данных Нет необходимости перечислять все элементы данных; все они очень похожи и отличаются только предварительной обработкой.

Некоторые параметры являются целыми, некоторые — дробными или текстовыми.

Теперь вы можете создавать триггеры на основе имеющихся данных.

Первый из триггеров определит, доступны ли данные базы данных:

Мониторинг СУБД Firebird с помощью Zabbix

Триггер nodata Определите состояние базы данных:

Мониторинг СУБД Firebird с помощью Zabbix

Триггерное отключение Ну и разница между текущей транзакцией и OIT, которая важна для версионных баз данных:

Мониторинг СУБД Firebird с помощью Zabbix

Триггер ОИТ Можно «вытянуть» больше данных из базы, собрать информацию с помощью индексов или таблиц, но мне это не нужно.

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



Мониторинг СУБД Firebird с помощью Zabbix

Графики мониторинга Здесь все довольно просто, первый график показывает количество операций чтения из базы, второй операций удаления, обновления и создания, а последний показывает задержку OIT. Я думаю, что каждый, кто раньше хоть одним глазком видел FirebirdSQL и Zabbix, очень быстро и без проблем настроит мониторинг.

Спасибо всем.

Теги: #*nix #itинфраструктура #sql #zabbix #zabbix мониторинг #cmd #firebirdsql #isql #firebird #Firebird/Interbase

Вместе с данным постом часто просматривают: