[ZABBIX] SQL Postgress cash

Бывают случаи, когда требуется собирать несколько значений из одной таблицы или вьюхи. При этом, сам селект долго отрабатывает и грузит сервер. К сожалению, заббикс в текущей реализации не умеет забирать несколько значений из селекта.
Для решения этой проблемы мне видятся два подхода:
— забирать данные скриптом, а потом использовать zabbix-sender
— забирать данные скриптом в файл, а заббикс читает эти данные
Далее я покажу реализацию второго подхода.

  1. Создаем VIEW на BD. Zabbix не преобразует пустое значение в 0 (когда вью ничего не вернула). Поэтому, надо написать такую вьюху, которая возвращала бы 0 вместо «нет результатов»
    Пример:

    Наша вьюха:
  2. на standby сервере DB или ином другом.
  3. Сохранение пароля подключения к БД. vim /opt/script/.pgpass

  4. Скрипт исполнения запроса. vim /opt/script/zabbix/get_data.sh
    get_data.sh

     
  5. крипт возвращает возможные значения айтемов. vim /opt/script/zabbix/stat_items.sh
    stat_items.sh
  6. crontab -e. Файл кеша именуется название_вьюхи.stat

     
  7. Zabbix. Под каждый сервер создаем свой темплейт с названием Templ_App_SQL_имяПриложения
  8. идем в Discovery rules и создаем правило. Здесь задается значение переменной, которая будет перебираться для создания item-ов. Например, перемененная {#SYSTEMNAME} = WEB. ANDROID, IOS
    Name: events_distinct_customer_platform — по имени вьюхи
    Type: Zabbix agent
    Key: system.run[«sh /opt/script/stat_items.sh events_distinct_customer_platform»]
    Update interval (in sec): 3600 — чем больше, тем лучше
    Keep lost resources period (in days): 30 — удаление, если не найдено
  9. внутри этого правила переходим на Item prototypes и создаем прототип элемента данных
    Name: events_distinct_customer_platform_{#SYSTEMNAME}
    Type: Zabbix agent
    Key: system.run[«grep -E ‘^{#SYSTEMNAME}\|’ /opt/script/events_distinct_customer_platform.stat | awk -F’|’ ‘{ print $2 }'»]
    Update interval (in sec): 60
    History storage period (in days): 30
    Trend storage period (in days): 365
    Applications: название группы элементов данных для вывода в графане
  10. Trigger prototypes. Для этого типа item-ов создаем два тригера. Первый сравнивает среднее значение за последние 5 минут со средним от средних значений за 5 минут 7, 14, 21, 28 дней назад. Второй сравнивает среднее значение за 5 минут и среднне значение за 5 минут 30 минут назад. Для обоих триггеров задается два порога 9-21 и 21-9
    1)Name: EVENTS_distinct_customer_{#SYSTEMNAME}
    Expression:

Description

Количество уникальных пользователей в онлайне по {#SYSTEMNAME} в сравнении с прошлой неделей выросло или снизилось
в 2 раза (9-21) или
в 4 раза ночью (21-9).

Текущее значение: {ITEM.VALUE}
2)Name: EVENTS_distinct_customer_{#SYSTEMNAME}
Expression:

 

 

Description

Количество уникальных пользователей в онлайне по {#SYSTEMNAME} в сравнении с данными 30 минут назад выросло или снизилось

в 2 раза днем (9-21) или
в 4 раза ночью (21-9).

Текущее значение: {ITEM.VALUE}

Идем в Monitoring — Latest data и проверяем получает ли заббикс данные

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *