Вы находитесь на странице: 1из 5

2020/04/10 10:22 1/5 Добавление интервалов времени в SLA для фронтенда ZabbixServer

Добавление интервалов времени в SLA для


фронтенда ZabbixServer

1. Изменение /usr/share/zabbix/srv_status.php

/usr/share/zabbix/srv_status.php:38 – находим массив periods:

$periods = [
'today' => _('Today'),
'week' => _('This week'),
'month' => _('This month'),
'year' => _('This year'),
24 => _('Last 24 hours'),
24 * 7 => _('Last 7 days'),
24 * 30 => _('Last 30 days'),
24 * DAY_IN_YEAR => _('Last 365 days')
];

Расширяем его до вида:

$periods = [
'today' => _('Today'),
'previous_day' => _('Previous day'),
'day_before_yesterday' => _('Day before yesterday'),
'2_days_ago' => _('2 days ago'),
'week' => _('This week'),
'previous_week' => _('Previous week'),
'month' => _('This month'),
'previous_month' => _('Previous month'),
'year' => _('This year'),
24 => _('Last 24 hours'),
24 * 7 => _('Last 7 days'),
24 * 30 => _('Last 30 days'),
24 * DAY_IN_YEAR => _('Last 365 days')
];

/usr/share/zabbix/srv_status.php:62 – находим условие обработки массива $_REQUEST,


проходим до состояния else, находим кейсы оператора switch. Приводим их к такому виду:

switch ($period) {
case 'today':
$period_start = mktime(0, 0, 0, date('n'), date('j'), date('Y'));
break;
case 'previuos_day':
$period_end = strtotime('today');
$period_start = strtotime('yesterday');

База знаний ГК ЭКСПЕРТ - https://kb.mrtexpert.ru/


Last
update:
playground:oss:шапшалов:zabbix_frontend_sla_custom_period_set:index https://kb.mrtexpert.ru/doku.php?id=playground:oss:%D1%88%D0%B0%D0%BF%D1%88%D0%B0%D0%BB%D0%BE%D0%B2:zabbix_frontend_sla_custom_period_set:index
2019/10/09
17:17

break;
case 'day_before_yesterday':
$period_end = strtotime('yesterday');
$period_start = strtotime('yesterday - 1 day');
break;
case '2_days_ago':
$period_end = strtotime('yesterday - 1 day');
$period_start = strtotime('yesterday - 2 day');
break;
case 'week':
$period_start = strtotime('last sunday');
break;
case 'previous_week':
$period_end = strtotime('00:00:00 monday this week');
$period_start = strtotime('00:00:00 monday previous week');
break;
case 'month':
$period_start = mktime(0, 0, 0, date('n'), 1, date('Y'));
break;
case 'previous_month':
$period_end = strtotime('00:00:00 first day of this month');
$period_start = strtotime('00:00:00 first day of previous month');
break;
case 'year':
$period_start = mktime(0, 0, 0, 1, 1, date('Y'));
break;
case 24:
case 24 * 7:
case 24 * 30:
case 24 * DAY_IN_YEAR:
$period_start = $period_end - ($period * 3600);
break;
}

2. Изменение /usr/share/zabbix/include/services.inc.php

/usr/share/zabbix/include/services.inc.php:158 – находим метод

function createServiceMonitoringTree(array $services, array $slaData,


$period, &$tree, array $parentService = [], array $service = [], array
$dependency = [])
{
....
}

находим условие else в обработке метода, в нём массив periods (строка


services.inc.php:197). Массив приводим к такому виду:

https://kb.mrtexpert.ru/ Printed on 2020/04/10 10:22


2020/04/10 10:22 3/5 Добавление интервалов времени в SLA для фронтенда ZabbixServer

$periods = [
'today' => 'daily',
'previous_day' => 'daily',
'day_before_yesterday' => 'daily',
'2_days_ago' => 'daily',
'week' => 'weekly',
'previous_week' => 'weekly',
'month' => 'weekly',
'previous_month' => 'weekly',
'year' => 'yearly',
24 => 'daily',
24 * 7 => 'weekly',
24 * 30 => 'monthly',
24 * DAY_IN_YEAR => 'yearly'
];

Этот массив отвечает за формирование таблицы периодов «Проблемы/Нет_проблем» при


нажатии на ссылку любого сервиса.

3. Русификация названий периодов в SLA

Конвертим бинарный файл русификации


/usr/share/zabbix/locale/ru/LC_MESSAGES/frontend.mo в редактируемый текстовый MIME-тип
.po для выполнения изменений:

msgunfmt /usr/share/zabbix/locale/ru/LC_MESSAGES/frontend.mo >


/usr/share/zabbix/locale/ru/LC_MESSAGES/frontend.po

Открываем на редактирование полученный *.po*-файл и добавляем соответствия английских


описаний русским. Английские описания должны в точности соответствовать текстовым
значениям функций gettext ( _('') ), указанным в качестве ассоциаций для ключей в массиве
periods со строки файла /usr/share/zabbix/srv_status.php:38:

msgid "Previous day"


msgstr "Вчера"

msgid "Day before yesterday"


msgstr "Позавчера"

msgid "2 days ago"


msgstr "Позапозавчера"

msgid "Previous month"


msgstr "Прошлый месяц"

msgid "Previous week"


msgstr "Прошлая неделя"

База знаний ГК ЭКСПЕРТ - https://kb.mrtexpert.ru/


Last
update:
playground:oss:шапшалов:zabbix_frontend_sla_custom_period_set:index https://kb.mrtexpert.ru/doku.php?id=playground:oss:%D1%88%D0%B0%D0%BF%D1%88%D0%B0%D0%BB%D0%BE%D0%B2:zabbix_frontend_sla_custom_period_set:index
2019/10/09
17:17

Сохраняем изменения в frontend.po и конвертим его обратно в .mo:

msgfmt /usr/share/zabbix/locale/ru/LC_MESSAGES/frontend.po -o
/usr/share/zabbix/locale/ru/LC_MESSAGES/frontend.mo

После этого рестартуем апач:

/etc/init.d/apache2 restart

Всё. После этого в выпадающем меню SLA появились новые периоды, которые мы
сформировали в скриптах фронтенда:

https://kb.mrtexpert.ru/ Printed on 2020/04/10 10:22


2020/04/10 10:22 5/5 Добавление интервалов времени в SLA для фронтенда ZabbixServer

From:
https://kb.mrtexpert.ru/ - База знаний ГК ЭКСПЕРТ

Permanent link:
https://kb.mrtexpert.ru/doku.php?id=playground:oss:%D1%88%D0%B0%D0%BF%D1%88%D0%B0%D0%BB%D0%BE%D0%B2:zabbix_frontend_sla_custom_period_set:index

Last update: 2019/10/09 17:17

База знаний ГК ЭКСПЕРТ - https://kb.mrtexpert.ru/