Задача: Изменить структуру меню в системе мониторинга zabbix
Итак, предположим, что вам необходимо добавить новую вкладку в системном меню zabbix. Так как структура меню хранится в статическом виде в исходниках zabbix, сделать это с помощью стандартных средств не получится, поэтому придется немного копнуть web-интерфейс.
Решение:
Для начала надо определить, где zabbix хранит свои php-исходники. у меня это /var/www/html/addon-modules/zabbix/frontends/php/, однако в вашем дистрибутиве путь может быть другим. Определить это можно командой rpm -ql zabbix-phpfrontend-engine. Эта команда выведет множество строк, начинающихся одинаково. Это и будет путь к установленному web-интерфейсу zabbix
После того, как директория установки обнаружена нам необходимо отредактировать файл, где zabbix хранит свои меню. Если вам необходимо изменить только подменю, например, во вкладке "Мониторинг", то следует отредактировать файл include/page_header.php. Найдите в нем строчку примерно следующего содержания: $ZBX_MENU = array( ... (у меня это строка 102). Здесь следует оставить некоторые комментарии. Эта строка задает структуру главного меню zabbix. Структура задается следующим образом: переменная $ZBX_MENU является ассоциативным массивом, каждый элемент которого характеризует какой-либо пункт меню. Элемент с индексом 'view' характеризует пункт меню "Мониторинг", с индексом 'reports' - "Отчеты" и так далее. Каждый элемент массива также является ассоциативным массивом. В этом массиве хранится информация, характеризующая этот пункт меню. Нас интересует только 2 элемента: 'label' (Заголовок пункта меню) и 'pages' (Массив, содержащий описание каждой вкладки). Остановимся поподробнее на массиве 'pages'. Он содержит информацию о каждой вкладке в виде обычного массива. Каждый элемент этого массива представляет собой ассоциативный массив, в котором нас интересуют элементы с индексами 'url' и 'label', которые хранят URL страницы, на которую ссылается вкладка и ее заголовок соответственно. На схеме изображена структура переменной $ZBX_MENU по умолчанию.

В коде инициализации переменной $ZBX_MENU можно отредактировать любые параметры, а также добавить новые, путем копирования необходимого блока.
Для добавления новой страницы (1 уровня) необходимо также прописать его имя (значение 'label') в особый список в файле js/common.js, который называется menus. У меня он инициализируется в строке 504, однако, если в более новых версиях zabbix что-то будет изменено, то вы можете легко найти этот список по имени любого уже существующего меню, например, reports.
Автор: Андрей Смирнов
Оригинал: http://blog.acmip.ru/2009/11/zabbix.html
Итак, предположим, что вам необходимо добавить новую вкладку в системном меню zabbix. Так как структура меню хранится в статическом виде в исходниках zabbix, сделать это с помощью стандартных средств не получится, поэтому придется немного копнуть web-интерфейс.
Решение:
Для начала надо определить, где zabbix хранит свои php-исходники. у меня это /var/www/html/addon-modules/zabbix/frontends/php/, однако в вашем дистрибутиве путь может быть другим. Определить это можно командой rpm -ql zabbix-phpfrontend-engine. Эта команда выведет множество строк, начинающихся одинаково. Это и будет путь к установленному web-интерфейсу zabbix
После того, как директория установки обнаружена нам необходимо отредактировать файл, где zabbix хранит свои меню. Если вам необходимо изменить только подменю, например, во вкладке "Мониторинг", то следует отредактировать файл include/page_header.php. Найдите в нем строчку примерно следующего содержания: $ZBX_MENU = array( ... (у меня это строка 102). Здесь следует оставить некоторые комментарии. Эта строка задает структуру главного меню zabbix. Структура задается следующим образом: переменная $ZBX_MENU является ассоциативным массивом, каждый элемент которого характеризует какой-либо пункт меню. Элемент с индексом 'view' характеризует пункт меню "Мониторинг", с индексом 'reports' - "Отчеты" и так далее. Каждый элемент массива также является ассоциативным массивом. В этом массиве хранится информация, характеризующая этот пункт меню. Нас интересует только 2 элемента: 'label' (Заголовок пункта меню) и 'pages' (Массив, содержащий описание каждой вкладки). Остановимся поподробнее на массиве 'pages'. Он содержит информацию о каждой вкладке в виде обычного массива. Каждый элемент этого массива представляет собой ассоциативный массив, в котором нас интересуют элементы с индексами 'url' и 'label', которые хранят URL страницы, на которую ссылается вкладка и ее заголовок соответственно. На схеме изображена структура переменной $ZBX_MENU по умолчанию.

В коде инициализации переменной $ZBX_MENU можно отредактировать любые параметры, а также добавить новые, путем копирования необходимого блока.
Для добавления новой страницы (1 уровня) необходимо также прописать его имя (значение 'label') в особый список в файле js/common.js, который называется menus. У меня он инициализируется в строке 504, однако, если в более новых версиях zabbix что-то будет изменено, то вы можете легко найти этот список по имени любого уже существующего меню, например, reports.
Автор: Андрей Смирнов
Оригинал: http://blog.acmip.ru/2009/11/zabbix.html
Comment