Костыли для Zabbix

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

Принудительное отключение параметров, которые уже не обнаруживаются через LDD, но еще не удалились:
# смотрим сколько таких показателей для нужного нам хоста
SELECT count(*)
FROM items
LEFT JOIN item_discovery ON item_discovery.itemid = items.itemid
WHERE hostid = 10197
  AND ts_delete != 0
  AND status = 0;
BEGIN;
UPDATE items
SET status = 1
WHERE itemid IN
    (SELECT items.itemid
     FROM items
     LEFT JOIN item_discovery ON item_discovery.itemid = items.itemid
     WHERE hostid = 10197
       AND ts_delete != 0
       AND status = 0
    );
# проверяем что количество затронутых строк совпадает с первым SELECT запросом
# и только потом делаем коммит, в противном случае возвращаемся к исходному состоянию выполнив ROLLBACK
COMMIT;

В первом запросе, мы получили количество параметров, которые еще собираются с хоста, но уже помечены на удаление, так как, к примеру, эти параметры не находятся в LLD. Нам не интересно собирать такие данные и мы отключаем их вторым запросом. Обязательно меняйте hostid на своё значение.

Уменьшаем занимаемое место базы в PostgreSQL:

Вкратце:
— В старых версиях Zabbix, при создании схемы базы, используются OIDs. Занимают много места, бесполезны, нужно удалить.

ALTER TABLE test SET WITHOUT OIDS;

— Пересоздаем индексы с типом brin для огромных таблиц history/trends

begin;
drop index history;
create index history_1 on history using brin (itemid, clock);
commit;
Очищение всех сообщений о проблемах и состояние триггеров:
  1. отключаем zabbix-server
  2. очищаем все из базы данных
TRUNCATE acknowledges CASCADE;
TRUNCATE alerts CASCADE;
TRUNCATE escalations CASCADE;
TRUNCATE event_recovery CASCADE;
TRUNCATE event_tag CASCADE;
TRUNCATE events CASCADE;
TRUNCATE problem CASCADE;
UPDATE triggers SET value = 0 WHERE value = 1;
Массовое отключение триггеров с нужным нам именем для нужного хоста:
BEGIN;
UPDATE triggers SET status = 1 WHERE triggerid in (
  SELECT DISTINCT t.triggerid
  FROM triggers t 
    INNER JOIN functions f ON ( f.triggerid = t.triggerid ) 
    INNER JOIN items i ON ( i.itemid = f.itemid ) 
    INNER JOIN hosts h ON ( i.hostid = h.hostid ) 
  WHERE h.name like '%dlink-sw01%' AND t.description like '%Link Usage%'
);
COMMIT;
Массовое отключение сбора заданных метрик для нужного хоста:
BEGIN;
UPDATE items SET status = 1 WHERE itemid IN (
  SELECT DISTINCT i.itemid
  FROM items i 
    INNER JOIN hosts h ON ( i.hostid = h.hostid ) 
  WHERE h.hostid = 10202 AND i.snmp_oid LIKE 'IF-MIB::if%'
);
COMMIT;