Добрый день.
Расскажу немного предыстории…
Есть софт — Eaton Intelligent Power® Protector, установлен на Linux серверах к которым подключены UPS.
Софт мониторит состояние UPS и пишет их в соседнюю sqlite базу данных.
Требовалось мониторить состояние UPSов в Zabbix, решили это просто:
В zabbix-agentd.conf добавили параметры мониторинга.
UserParameter=upsd.voltagein, /usr/bin/sqlite3 /usr/local/Eaton/IntelligentPowerProtector/db/mc2.db "select value from status where object = 'UPS.PowerConverter.Input[1].Voltage'"
т.е. с помощью sqlite3 читаю из базы нужные значения раз в минуту.
Но со временем обнаружилась проблема, по прошествии времени (обычно 3-4 часа) база встает в locked режим и sqlite3 больше из нее причитать ничего не может, софт же от Eaton тоже перестает в нее что-либо писать, но держит базу открытой.
Перезагрузка службы от Eaton решает проблему на те же 3-4 часа…
Судя по всему затык происходит при одновременной попытке доступа к базе со стороны Eaton и sqlite3.
Подскажите, можно как-то указать sqlite3 открывать базу только для чтения? Я предполагаю, что затык происходит из-за того, что Eaton и sqlite3 одновременно открывают базу на запись.
Благодарю за помощь!