Zabbix24-server, PostgreSQL - большая БД

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
kharkov_max
капитан
Сообщения: 1862
Зарегистрирован: 2008-10-03 14:56:40

Zabbix24-server, PostgreSQL - большая БД

Непрочитанное сообщение kharkov_max » 2016-03-09 10:39:21

День добрый.

Имеется:

Код: Выделить всё

FreeBSD server 10.2-STABLE FreeBSD 10.2-STABLE #0 r288108: Wed Sep 23 08:30:45 EEST 2015     root@server:/usr/obj/usr/src/sys/FREE10  amd64

Код: Выделить всё

postgresql93-client-9.3.11     PostgreSQL database (client)
postgresql93-server-9.3.11     The most advanced open-source database available anywhere

Код: Выделить всё

zabbix24-frontend-2.4.7        Enterprise-class open source distributed monitoring (frontend)
zabbix24-server-2.4.7          Enterprise-class open source distributed monitoring (server)
База разрослась до 420 Гб
Web интерфейс показывавет

Код: Выделить всё

Количество узлов сети (активированных/деактивированных/шаблонов)	218	178 / 5 / 35
Количество элементов данных (активированных/деактивированных/неподдерживаемых)	6887	4643 / 664 / 1580
Количество триггеров (активированных/деактивированных [проблема/ок])	1159	1067 / 92 [12 / 1055]
Требуемое быстродействие сервера, новые значения в секунду	253.88	- 
Удалил из мониторинга 8 50 портовых свичей, по каждому порту мониторилось 4 параметра, с историей за 90 дней.
Надеялся что housekeeper, постепенно прибьет данные, но не тут то было.
Прошло достаточно много времени, месяц, а БД так и не уменьшилась.
Раз в неделю, на выходных запускаю

Код: Выделить всё

/usr/local/bin/vacuumdb -U pgsql -a -w -f -z -q
По идее если в файле базы есть пустое место то должно ее пережать и БД должна явно уменьшиться.

Есть конечно вариант сделать партиции на БД, но как мне кажеться это не выход, думаю что как то можно разобраться и запустить штатный housekeeper.

Что делал.
1. Через Web интрефейс уменьшил хранение истории до 7 дней
2. Внес изменения в файл src/zabbix_server/housekeeper/housekeeper.c #define HK_MAX_DELETE_PERIODS 168
и пересобрал сервер
https://www.zabbix.com/forum/showthread.php?t=46535
3. В настройках сервера:
HousekeepingFrequency=1 (запуск каждый час)
MaxHousekeeperDelete=0 (без ограничение на удаление)

Для очистки БД пробовал создавать задание обслуживания и отключал сбор статистики на несколько дней по всем группам - не помогло.
В мониторинге zabbix сервера видно что Housekeeping запускается, улетает на 100% и так постоянно висит ...

БД явно растет каждый день.
Подскаждите как быть?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
kharkov_max
капитан
Сообщения: 1862
Зарегистрирован: 2008-10-03 14:56:40

Zabbix24-server, PostgreSQL - большая БД

Непрочитанное сообщение kharkov_max » 2016-03-16 18:28:33

Т.к. все молчат, запустил вручную удаление данных. Надеюсь что поибьет что то лишнее и бд станет веселее...

Аватара пользователя
kharkov_max
капитан
Сообщения: 1862
Зарегистрирован: 2008-10-03 14:56:40

Zabbix24-server, PostgreSQL - большая БД

Непрочитанное сообщение kharkov_max » 2016-03-21 12:48:16

Сделал удаление данных

Код: Выделить всё

echo "delete FROM alerts where age(to_timestamp(alerts.clock)) > interval '7 days'" | psql -U$user $dbname -h$host
echo "delete FROM acknowledges where age(to_timestamp(acknowledges.clock)) > interval '7 days'"  | psql -U$user $dbname -h $host
echo "delete FROM events where age(to_timestamp(events.clock)) > interval '7 days'"              | psql -U$user $dbname -h $host
echo "delete FROM history where age(to_timestamp(history.clock)) > interval '7 days'"            | psql -U$user $dbname -h $host
echo "delete FROM history_uint where age(to_timestamp(history_uint.clock)) > interval '7 days'"  | psql -U$user $dbname -h $host
echo "delete FROM history_str  where age(to_timestamp(history_str.clock)) > interval '7 days'"   | psql -U$user $dbname -h $host
echo "delete FROM history_text where age(to_timestamp(history_text.clock)) > interval '7 days'"  | psql -U$user $dbname -h $host
echo "delete FROM history_log where age(to_timestamp(history_log.clock)) > interval '7 days'"    | psql -U$user $dbname -h $host

echo "delete FROM trends where age(to_timestamp(trends.clock)) > interval '30 days'"             | psql -U$user $dbname -h $host
echo "delete FROM trends_uint where age(to_timestamp(trends_uint.clock)) > interval '30 days'"   | psql -U$user $dbname -h $host

echo "delete from history where itemid not in (select itemid from items where status='0')"       | psql -U$user $dbname -h $host
echo "delete from history_uint where itemid not in (select itemid from items where status='0')"  | psql -U$user $dbname -h $host
echo "delete from history_str where itemid not in (select itemid from items where status='0')"   | psql -U$user $dbname -h $host
echo "delete from history_text where itemid not in (select itemid from items where status='0')"  | psql -U$user $dbname -h $host
echo "delete from history_log where itemid not in (select itemid from items where status='0')"   | psql -U$user $dbname -h $host

echo "delete from trends where itemid not in (select itemid from items where status='0')"        | psql -U$user $dbname -h $host
echo "delete from trends_uint where itemid not in (select itemid from items where status='0')"   | psql -U$user $dbname -h $host
Потом пережал базу

Код: Выделить всё

/usr/local/bin/vacuumdb -U pgsql -a -w -f -z -q
PgAdmin начал показываать размер БД 134 Гб вместо 470 Гб.

Но все равно как мне кажется что то еще не так, т.к. тот же PgAdmin показывает самую большую таблицу на 8Гб, все остальное весит килобайты и мегабайты, ни как не гигабайты.
В БД всего 104 таблицы ...

Почти уверен что поможет бекап и разбекап БД, думаю что есть какие то логи к таблицам.
Вопрос как удалить старые логи таблиц штатными средствами или настроить их ротацию и т.д.?