Comments 11
1) а если на сервере несколько БД? у вас же жестко прописано, хотя бы в макрос на уровне хоста в заббиксе нужно перенести
2) жестко прописанный пароль в скрипте? не надо так
Мой вариант с использованием discovery, правда под линукс
userparameter_firebird.conf
UserParameter=firebird.stats_db[*],/etc/zabbix/scripts/firebird_stats.sh $1
UserParameter=firebird.discovery_db,cat /var/zabbix/firebird_db.txt | awk 'BEGIN{printf "{\"data\":["}; {printf c"{\"{#DB}\":\""$0"\" }";c=", "}; END{print "]}"}'
firebird_stats.sh
#!/usr/bin/env bash
SCRIPT_DIR=$(dirname "$0")
. $SCRIPT_DIR/firebird_user.conf
db=$1
#"127.0.0.1:/data/database.fdb"
#echo $db
isql-fb -ch utf8 -user $ISC_USER -pass $ISC_PASSWORD -i $SCRIPT_DIR/firebird_stats.sql $db | egrep -v "RESULT|=="
firebird_stats.sql, запрос сразу выдает все данные в одном столбце в json-формате
SELECT
'{' ||
'"pages":' || db.mon$pages ||','||
'"page_buffers":' || mon$page_buffers ||','||
'"db_size":' || (db.mon$pages * db.mon$page_size ) ||','||
'"seq_reads":' || r.mon$record_seq_reads ||','||
'"idx_reads":' || r.mon$record_idx_reads ||','||
'"record_inserts":' ||r.mon$record_inserts ||','||
'"record_updates":' ||r.mon$record_updates ||','||
'"record_deletes":' ||r.mon$record_deletes ||','||
'"record_backouts":' ||r.mon$record_backouts ||','||
'"record_purges":' ||r.mon$record_purges ||','||
'"record_expunges":' ||r.mon$record_expunges ||','||
'"record_locks":' ||r.mon$record_locks ||','||
'"record_waits":' ||r.mon$record_waits ||','||
'"record_conflicts":'||r.mon$record_conflicts||','||
'"page_reads":' ||io.mon$page_reads ||','||
'"page_writes":' ||io.mon$page_writes ||','||
'"page_fetches":'||io.mon$page_fetches ||','||
'"page_marks":' ||io.mon$page_marks ||','||
'"connections":' ||(select count(*) from mon$attachments) ||','||
'"memory_used":' ||mem.mon$memory_used ||','||
'"memory_allocated":' ||mem.mon$memory_allocated ||','||
'"max_memory_used":' ||mem.mon$max_memory_used ||','||
'"max_memory_allocated":' ||mem.mon$max_memory_allocated ||
'}' as result
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)
left join mon$memory_usage mem on (db.mon$stat_id = mem.mon$stat_id);
для каждого хоста соответственно свои содержимое firebird_user.conf
ISC_USER=sysdba
ISC_PASSWORD=masterkey
/var/zabbix/firebird_db.txt
127.0.0.1:/data/database/db.fdb
127.0.0.1:/data/database/tab.fdb
127.0.0.1:/data/database/tab_test.fdb
Согласен что с дискавери будет интереснее если баз много. На счет логина и пароля все конечно же так, естественно их лучше вывести в окружение, но тогда ради этих же целей нужно использовать алиасы а не пути к бд как у вас. И не очень понял зачем тут json?
1) несколько алиасов или полных путей, разницы нет же. Ну и плюс возможность получать инфу из баз с других хостов. Бывает иногда и такое.
127.0.0.1:baza1
127.0.0.1:baza2
2) json считается более правильным форматом для последующего парсинга. В общем и целом дело вкуса. Кто-то привык все значения и через регулярки получать.
Меня одного смущает адовая окаменелость не только данной бд, но и заббикса, 2008 винды и вообще факт работы БД в винде? Убунта кстати тоже старая. Зачем так ?
Убунту старая? Припомните когда вышла следующая LTS версия после 20ой? А забикс очень любит именно LTS и не только забикс. Чем вам не нравится "винда" и FB?
Да, старая. Два года, Карл. "Любит" что это за термин. Если заббикс не работает в современной ОС, то это проблема заббикса. Винда как сервер баз данных (кроме MS SQL) это извращение. Удивительно чтоб вообще работает. Ну а что до FB - я просто ослеп на неделю когда увидел его исходники (ибо пришлось дебажить баги в нём). Ну и подходы у него доставляющие во всех местах. А так - наелся я дерьма с ним. И нет, не не осилил. Осилил. Именно что. Больше не хочу.
Автор же сказал, что базе уже более 20 лет. Переносить её на новые платформы никто не собирается видимо, но пока еще пользуются.
С nodata аккуратней будьте. Если элемент станет неподдерживаемый или хост недоступный, этот триггер сработает.
Мониторинг СУБД Firebird с помощью Zabbix