Cacti что это за программа

Cacti что это за программа

Любая система, предназначенная для решения серьезных задач, требует обязательного наблюдения за ее работой, анализа эффективности и тщательного разбора полетов в случае успеха либо неудачи внедрения того или иного новшества, изменения конфигурации. Это возможно лишь в том случае, когда у вас есть подробная информация о том, «как это было раньше» и «как это есть сейчас», то есть о состоянии системы в различные моменты времени.

RRDTool — промышленный стандарт мониторинга

Свободнораспространяемая система Cacti была создана специально для решения подобных задач. Она предоставляет пользователю удобный веб-интерфейс * к утилите RRDTool, предназначенной для работы с круговыми базами данных (Round Robin Database), которые используются для хранения информации об изменении одной или нескольких величин за определенный промежуток времени.

Широкие возможности настройки пользовательского интерфейса

Интерфейс отображения статистики, собранной с сетевых устройств, представлен в виде дерева, структура которого задается самим пользователем. Как правило, графики группируют по определенным критериям, причем один и тот же график может присутствовать в разных ветвях дерева (например, трафик через сетевой интерфейс сервера — в той, которая посвящена общей картине интернет-трафика компании, и в ветви с параметрами данного устройства). Есть вариант просмотра заранее составленного набора графиков, и есть режим предпросмотра. Каждый из графиков можно рассмотреть отдельно, при этом он будет представлен за последние день, неделю, месяц и год. Возможно самому выбрать временной промежуток, за который будет сгенерирован график, причем сделать это можно, как указав календарные параметры, так и просто выделив мышкой определенный участок на нем.

[Cacti] Demo

Установка Cacti на Unix-сервер

Для установки Cacti на Unix-машине потребуется веб-сервер * Apache, настроенный на работу с PHP. Скриптам веб-интерфейса нужно будет запускать внешние программы от имени веб-сервера, поэтому защищенный режим (Safe Mode) PHP должен быть отключен и обязательно должен присутствовать исполняемый файл интерпретатора PHP (как правило, /usr/bin/php или /usr/local/bin/php).

Следует обязательно установить пакеты RRDTool и Net-SNMP * и, если Apache запущен в chroot-окружении, придется позаботиться о доступности их файлов и библиотек для сервера. Настройка веб-сервера заключается лишь в создании виртуального хоста (если это требуется) и в обеспечении ему доступа к директории с Cacti. Кроме этого понадобится база данных MySQL, в которой Cacti будет хранить свою конфигурацию.

Достаточно создать ее, завести пользователя и импортировать начальную структуру (подробные команды для всех этих действий есть в инструкции по установке). Разработчики Cacti рекомендуют завести отдельного пользователя, от имени которого будут запускаться скрипты Cacti. Как показала практика, в качестве него лучше взять пользователя, от имени которого работает Apache (обычно это www, apache или httpd). Важный момент — нужно установить его владельцем папок rra и log в директории Cacti. И от имени этого же пользователя следует запускать сборщик статистики из системного планировщика.

Установка и настройка Cacti для мониторинга сети

Настройка объекта мониторинга

Далее следует сконфигурировать компьютер, за которым будет вестись наблюдение. На нем также следует установить пакет Net-SNMP. Далее создается файл конфигурации SNMP-демона. Его расположение может меняться в зависимости от дистрибутива. Следует ориентироваться на /etc/snmpd.conf, /etc/snmpd/snmpd.conf, /usr/local/etc/snmpd/snmpd.conf.

Если вы впервые сталкиваетесь с конфигурацией SNMP, то можете ограничиться одной строкой в этом файле: rocommunity MyReadonlyCommunity (название вашего readonly-community используется в качестве пароля). Затем нужно запустить snmpd и поставить его в автозагрузку.

Прежде чем настраивать Cacti, следует понять логику ее работы. Система обслуживает ряд устройств (Devices — в терминологии Cacti). Каждое устройство — это хост, к которому есть доступ по сети, то есть оно характеризуется IP-адресом или DNS-именем. С устройством ассоциированы хранилища данных (Data Sources).

Каждое такое хранилище обслуживает один график (Graph), причем на этом графике может рисоваться несколько переменных — хранилище для них всех будет одно. Хранилище создается на основе шаблона данных (Data Template), который задает соответствие входных величин (полученных из SNMP-запросов или из скриптов) полям в базе данных и устанавливает дополнительные параметры хранения этих величин.

Сами же входные величины получаются из методов сбора данных (Data Input Methods) или запросов (Data Queries). Первые предназначены для величин, количество которых заранее известно (например, количество процессов — это всегда одно целое число), а вторые — наоборот (например, статистика с сетевых интерфейсов, число которых может быть различным).

График генерируется из круговой базы данных (хранилища) каждый раз заново, когда загружается страничка. Алгоритм и параметры его создания задаются шаблоном графика (Graph Template). Шаблоны хостов (Host Templates) упрощают работу с однотипными устройствами и позволяют привязать определенные шаблоны графиков и запросы к данному типу хоста. Например, для маршрутизаторов Cisco — один набор графиков, а для UNIX-серверов — другой.

Привязка объекта мониторинга к Cacti

Настройку Cacti следует начинать с создания устройств. Следует обратить внимание на то, чтобы везде были правильно прописаны SNMP community, — без этого просто невозможно будет снять статистику. Как для локального, так и для удаленного хоста следует выбрать шаблон «ucd/net SNMP Host». После создания устройства на странице с его свойствами появятся таблицы с запросами и шаблонами графиков.

Если в графе Status запросов нажать на зеленый кружок (обновить запрос), можно прочитать сообщение вида «Success [46 Items, 7 Rows]». Это значит, что Cacti удается снимать информацию с данного устройства этим запросом. Если будет «Success [0 Items, 0 Rows]», то, очевидно, этот запрос не подходит к данному хосту. Ориентируясь на это, можно самостоятельно добавлять запросы к данному устройству и смотреть — подойдут они или нет. Главное — если вы добавите запрос, ориентированный не на SNMP, а на локальный скрипт, например «Unix — Get mounted partitions», то он и будет снимать показания с локальной машины, а не с удаленного устройства, так что потом не удивляйтесь, откуда на управляемом коммутаторе взялся жесткий диск объемом 160 гигабайт и почему он заполнен на 70%.

В самом верху странички со свойствами устройства должна появиться ссылка Create graphs for this host. Нажмите на нее, и вам предложат выбрать, какие графики следует создать для данного хоста. Отметьте нужные галочками, и система сама сделает все необходимое.

Остается настроить дерево графиков (Graph Tree). Создайте структуру, которая логически сгруппирует ваши графики, например по расположению хостов (первый дата-центр, второй, третий), по типу устройств (хостинг-серверы, серверы баз данных, управляемые коммутаторы) или по типу графиков (трафик, загрузка процессоров, использование жестких дисков). В узел дерева можно поместить как хост (тогда при его выборе будут отображаться все графики, относящиеся к этому хосту), так и любой из графиков, которые обслуживает система.

Cacti позволяет завести несколько пользователей и разграничить их права как на просмотр статистики, так и на управление системой. Логика разделения доступа позволяет для каждого пользователя установить общую политику («Запретить» или «Разрешить»), а затем сделать из нее исключения.

Ниже приведены несколько моментов, с которыми вы столкнетесь по мере работы с Cacti и которые могут показаться вам непонятными.

    После того как вы создали график, он отображаться не будет (браузер выдаст ошибку загрузки изображения). Только после первого прохода серверным скриптом создастся хранилище данных. И лишь после второго прохода туда будут записаны первые значения.

В этой статье автор попытался ответить на вопросы, которые возникнут лишь при решении относительно простых задач мониторинга локальной или удаленной машины. Тем не менее возможности Cacti этим не ограничиваются, и в ваших руках действительно мощный инструмент для слежения за работой любых систем. Если стоит серьезная задача, вам не чужды азы программирования на bash, PHP или Perl и есть откуда брать информацию — с помощью Cacti вы сможете мониторить абсолютно все, начиная от посещаемости сайта и количества клиентов вашей компании и заканчивая средней температурой по больнице и числом девятнадцатилетних девушек на факультете информатики.

Ссылки по теме

  • Cacti: The Complete RRDTool-based Graphing Solution
  • RRDTool: Logging http://hostinfo.ru/articles/773″ target=»_blank»]hostinfo.ru[/mask_link]

    Cacti что это за программа

    tm

    Cacti — изменение URL на поддомен

    • CACTI
    • Web

    По-умолчанию система мониторинга CACTI доступна по адресу http://domain.xx/cacti/, т.е. с точки зрения web-сервера /cacti/ — является алиасом. Этот факт немного не удобен тем, что логи при обращении к /cacti/ будут сыпаться в общую кучу с логами домена. Конечно, можно как-то избавиться от этого тонкой настройкой логирования web-сервера, но можно поступить по-другому. Посадить CACTI на поддомен, т.е.

    URL будет выглядеть так: cacti.domain.xx. Ну, проще говоря, создать отдельный виртуальный хост на web-сервере.

    В этой небольшой зарисовке пример Ubuntu 14 + Apache 2.4.7. + CACTI. По умочанию, CACTI создаёт конфигурацию к основному домену в виде алиаса. Посмотреть можно в /etc/apache2/conf-available/cacti.conf. Эту конфигурацию мы отключаем:

    a2disconf cacti
    service apache2 reload

    Следующим шагом будет создание виртуального хоста в директории site-avialable:

    CACTI установка

    В качестве OS используется Ubuntu 15.10. Сразу оговорюсь, что на эту версию Ubuntu установится Cacti Version: 0.8.8f, Plugin Architecture Version: 3.1.

    Прежде чем устанавливать CACTI необходимо обзавестись Web сервером и всем, что к нему прилагается. А именно Apache2, MySQL, PHPMyAdmin (в простанародии LAMP-сервер), snmp, snmpd, snmp-mibs-downloader.

    1. apt-get install lamp-server^ (кошачье ушко в конце — не опечатка)

    2. apt-get install snmp snmpd snmp-mibs-downloader

    3. apt-get install cacti cacti-spine (собственно, сама система мониторинга)

    CACTI — начальные настройки

    Ниже скриншоты настроек и краткие комментарии к ним.

    1. Установка параметров протокола SNMP (версия, community). Я использую вторую версию с паролем по-умолчанию.

    2. Как я понял, это получение информации по всем запросам протокола SNMP.

    CACTI — Установка плагинов

    В этом разделе опишу установку плагинов с которыми приходилось работать. Ссылки на плагины будут. Для недоверчивых — ссылки на официальный сайт.

    Для начала ссылки на архивы с плагинами и их краткое описание. Все плагины брал тут. Поехали:

    CACTI — плагин FlowView — анализ NetFlow

    FlowView. Плагин который показывает погоду, но предназначенный для анализа NetFlow. Тем не менее он у меня установлен. Общую картину он создать может, поэтому начнём. Для настройки в первую очередь создаём директорию, куда будет падать flow.

    У меня всё льётся в /var/netflow/flows/completed. Создаём директорию:

    mkdir -p /var/netflow/flows/completed/

    Для того, что бы плагин заработал нужно установить библиотеку FlowTools :

    apt-get install flow-tools

    И вот тут у нас есть возможность ощутить всю корявость плагина. Часть скрипта которая отвечает за создание таблицы в БД имела тип MEMORY , что приводило к потере данных после рестарта MySQL или перезагрузке сервера.

    CACTI — плагин Spikekill — удаление пиков на графиках

    Spikekill. Скачать можно со страницы описания плагинов. Тут настроек совсем не много. Идём в Console -> Cacti Settings и заходим во вкладку SpikeKill . Включаем по желанию планировщик на удаление пиков (1) и графики (2).

    Самое главное, на мой взгляд, это получить кнопку удаления пиков рядом с графиком. Не у всех она сразу появляется после установки плагина. Для этого заходим в Console -> User Management выбираем пользователя которому необходимо назначить права и во вкладе Realm Permissions ставим галочку Plugin -> Remove Spikes on Graphs . В итоге получаем:

    CACTI — плагин Monitor

    Monitor. Здесь вообще настраивать практически нечего. Идём в Console -> Cacti Settings во вкладку Misc . Тут всё должно быть интуитивно понятно.

    В итоге выглядит это так:

    Скачать плагин можно тут.

    CACTI — плагин Thold — уведомления на сотовый телефон

    Плагин Thold предназначен для мониторинга заданных критических значений параметров оборудования. В данном плагине есть возможность отображения критических значений на графиках и возможность оповещения по электронной почте. Можно даже прикрутить оповещение по СМС на телефон. Начнём:

    После установки плагина, в настройках CACTI появляются соответствующие разделы:

    Cacti — Advanced Ping

    Шаблон для мониторинга задержки и потерь во внутренней и внешней сетях.

    Скачиваем шаблон. Файл .xml нужно импортировать через web-морду.

    После импортирования идём в Console -> Devices , проваливаемся в нужное нам устройство и в разделе Associated Graph Templates выбираем наш шаблон графика PING — Advanced Ping v1.3. Добавляем, переходим в меню Create Graphs for this Host и в списке доступных шаблонов создаём наш. Результат:

    К слову говоря, у меня возникли проблемы с отрисовкой графиков для внешних хостов + ко всему в списке устройств внешние хосты были в статусе DOWN. Решается просто:

    chmod a+s /usr/sbin/spine

    Cacti TCP Connections

    Шаблон для мониторинга количества TCP соединений для ОС на базе *nix.

    Скачиваем шаблон. В архиве файл .xml импортируем в Cacti через web-морду в меню Console -> Import Templates , а файл ss_tcp_connections.php помещаем в /usr/share/cacti/site/scripts/

    Через некоторое время наблюдаем график.

    Cacti — lm-sensor — мониторинг температуры

    Шаблон для мониторинга температуры CPU и чипсетов материнской платы. Для снятия статистики необходимы несколько компонентов для ОС (в моё случае для Ubuntu):

    apt-get install lm-sensors sensord

    После завершения установки выполняем сканирование оборудования на наличие различных датчиков температуры и вольтажа:

    1. Cacti full CPU usage
    2. Cacti — HDD usage
    3. Cacti — Memory usage
    4. Cacti мониторинг Postfix
    5. CACTI — D-Link DES 3028 CPU Usage template
    6. CACTI — мониторинг SMART HDD
    7. Cacti — мониторинг ИБП APC
    8. CACTI — WeatherMap — карта сети
    • Вы здесь:
    • Главная
    • Системы мониторинга
    • Cacti

    Источник: itsketch.ru

    Cacti – простой и удобный инструмент для мониторинга и анализа сети

    Для создания нового устройства выбираем в первом окне ссылку «Create devices» или в поле «Management -> Devices». В появившемся окне заведен только localhost. Если в поле Status напротив localhost установлено «Disabled», включаем его. Для этого отмечаем нужное устройство флажком, затем в списке «Choose an action» выбираем «Enable», в следующем окне подтверждаем включение нового устройства.

    Для добавления нового устройства нажимаем Add в правом верхнем углу и в появившемся окне заполняем описание (Description) имя или IP-адрес узла. В Host Template указываем шаблон и параметры SNMP (см. врезку «Настройка SNMP») (см. рис. 2).

    Рисунок 2. Создание нового устройства

    После нажатия кнопки «Create» переходим в следующее окно. Если Cacti удалось соединиться с указанным узлом, информация о нем будет выведена в самом верху страницы. Иначе появится надпись «SNMP Failed», следует вернуться и проверить настройки. Это окно похоже на предыдущее, только добавились два поля «Associated Graph Templates» и «Associated Data Queries».

    Обратите внимание на столбец Debugging, нажав на ссылку «Verbose Query» напротив сформированного графика, можно просмотреть запрос и его результат (см. рис. 3).

    Рисунок 3. Просмотр свойств запроса при создании графика

    Таким образом, на этапе настройки можно выяснить, будет ли работать этот график. После добавления в «Associated Graph Templates» в поле Status появится надпись «Not Being Graphed». Это означает, что график еще не сформирован, и это пока не должно вас волновать. После первого же запроса здесь появится «Is Being Graphed», рядом с которой будет надпись «Edit». Нажатие на нее позволит отредактировать параметры этого графика.

    После добавления шаблонов нажимаем «Create Graphs for this Host» и переходим в страницу создания графиков, отмечаем нужные и еще раз нажимаем «Create». Здесь для уточнения доступны: цвет и тип будущих графиков, максимальное значение параметров, подпись и прочее. Вернувшись обратно в дерево устройств, включаем новое устройство и затем, выбрав в том же списке «Place on a tree», помещаем его в дерево устройств. Теперь новое устройство и его графики будут доступны для просмотра во вкладке «Graphs» (см. рис. 4).

    Рисунок 4. Графики Cacti

    Настройка вкладки «Console»

    Все созданные графики можно найти в меню «Graph Management», где их можно быстро копировать, удалить, создать на их основе новый шаблон, изменить узел. По умолчанию все графики будут выводиться в корне дерева, если количество узлов велико, зайдя в «Graph Trees», можно создать новые ветки дерева, разместив в нем графики более логично. В «Sorting Type» вверху страницы можно выбрать вид сортировки. Изначально установлена ручная сортировка, для перемещения графиков по ветке дерева следует использовать стрелки. Можно выбрать сортировку по имени или по номеру.

    Следует ознакомиться и с параметрами в «Configuration > Setting», здесь имеется шесть вкладок:

    • General – настройка информации, заносимой в журнал, и куда будут заноситься события (файл/syslog), на этапе отладки, следует включить «Poller Logging Level» в HIGH или DEBUG, чтобы полностью контролировать все запросы, здесь же настраиваются параметры SNMP;
    • Paths – указываются пути ко всем утилитам, используемым Cacti, а также, если нужно, и cactid;
    • Poller – настройка работы системы сбора информации, здесь можно переключаться между cmd.php или cactid, а также настраивается проверка доступности узлов;
    • Graph Export – здесь можно настроить экспорт графиков (в том числе и автоматический) в локальный файл или по протоколу ftp, sftp;
    • Visual – параметры вывода графиков, размерность сетки, размер шрифта и прочее;
    • Authentication – аутентификация пользователей, локальная или LDAP, и настройки сервера LDAP.

    В меню «Utilities -> System Utilities» можно просмотреть журнал работы Cacti. Удобно, что в зависимости от результата записи имеют разный цвет (см. рис. 5), что помогает визуально определить неудачные запросы, причем можно сразу же перейти по гиперссылке в настройку устройства или отдельного графика. Отсюда же можно просмотреть журнал захода пользователей, кэш Pollerа и SNMP-запросов.

    Рисунок 5. Журнал работы Cacti

    По умолчанию в Cacti созданы два пользователя admin и guest. Последний не имеет пароля и позволяет пользователю только просматривать графики загрузки локальной системы.

    Для добавления пользователей переходим в «User Management» и выбираем «Add». Появится окно редактирования свойств нового пользователя.

    На первой странице вводим имя, пароль пользователя (активация «User Must Change Password at Next Login» заставит пользователя сменить пароль при первой регистрации), в «Login Options» указываем, что будет выведено после регистрации.

    Теперь появились еще три вкладки: «Realm Permissions», «Graph Permissions» и «Graph Settings», в которых более тонко настраиваются параметры доступа к графикам.

    В «Realm Permissions» указываем на операции, которые сможет осуществлять пользователь. После выбора нужных параметров нажимаем «Create». Пользователь пока не активирован, следует еще раз выбрать настройку пользователя.

    Установка плагинов Cacti

    Без краткого рассказа о плагинах Cacti статья была бы неполной. Cacti – самодостаточная система, и в большинстве случаев ее возможностей должно хватить, но с помощью плагинов можно несколько расширить ее функциональность. Устанавливаются плагины очень просто. Сначала необходимо пропатчить Cacti. Это можно сделать на уже работающей системе без какого-либо ущерба.

    $ cd cacti; sudo tar -xzvf /home/grinder/source/cacti/cacti-plugin-arch.tar.gz

    Проверяем параметры внутри config.php, кроме того, в нем появились новые строки, требующие редактирования. Так, строка:

    означает, что при обращении к серверу Cacti используется адрес http://host_name/, если вводится адрес вроде http://host_name/cacti/, следует строку изменить на:

    Теперь установим один из плагинов, у каждого есть свои особенности. Например, Discovery устанавливается так. Переходим в подкаталог cacti/plugins, который был создан при установке патча:

    $ tar xzvf discovery-0.7.tar.gz

    Создаем новые таблицы.

    Каждый плагин описан в массиве $plugins файла config.php. Изначально в нем записей нет.

    Для того чтобы добавить к нему плагин, в строке ниже дописываем элемент с названием каталога установленного плагина. Для некоторых плагинов это единственное, что требуется сделать для их установки. В нашем случае это discovery.

    Теперь в «Configuration -> Setting» появилась еще одна вкладка «Misc», предназначенная для настроек плагинов. Для discovery в ней требуется указать подсеть для сканирования, метод сканирования (ICMP, TCP, UDP), коммьюнити SNMP и период. После этого discovery будет сообщать вам, если найдет узел, поддерживающий SNMP и неизвестный Cacti. Неплохой плагин tools, после его установки в «Console -> Utilities» появится новое меню, в котором можно будет проверять работу сервисов на указанном узле или просматривать ответ SNMP (см. рис. 6).

    Рисунок 6. Результат работы плагина tools

    Советую также установить и плагин thold, с помощью которого можно отсылать сообщения. После его установки (только запись в config.php) в «Setting» появится еще одна вкладка. В ней требуется указать лишь почтовые адреса, на которые будут приходить сообщения, события (ошибки, тревоги и прочие), и способ отправки (PHP, SMTP, Sendmail) c необходимыми параметрами доступа. Появится и отдельная вкладка «Threhld», в которой можно затем их просмотреть оптом.

    Настройка любой системы мониторинга – задача кропотливая и весьма индивидуальная, поэтому обо всех вариантах рассказать не получится. Но, как видите, Cacti – очень простая в установке и использовании система, которая позволяет настроить систему мониторинга человеку, незнакомому со всеми тонкостями SNMP.

    Для того чтобы настроить поддержку SNMP в Linux, вам понадобится пакет snmpd (или net-snmp). После его установки вводим «snmpconf -i» и далее в интерактивном режиме отвечаем на вопросы. Пунктов и подпунктов здесь достаточно.

    Минимум, что требуется сделать – выбрать в первом окне конфигурационный файл snmpd.conf, затем «Access Control Setup», здесь несколько вариантов, для большинства ситуаций подойдет «SNMPv3 read-only user», далее ввести имя пользователя, уровень безопасности и OID этого коммьюнити. Теперь переходим в секцию «Agent Operating Mode», выбираем «The IP address and port number that the agent will listen on» и указываем интерфейс, на котором будет агент отдавать данные. Конечно это не все, но для минимальной работы хватит.

    1. Сайт проекта Cacti – http://cacti.net.
    2. Сайт проекта CactiUsers – http://cactiusers.org.

    Источник: samag.ru

    Мониторинг «на коленке» – использование Cacti для контроля Jаva приложений

    Передо мной стояла задача – в краткие сроки предложить меры по стабилизации большого трехзвенного Java-приложения, имеющего проблемы с потреблением памяти и производительностью. Времени, как обычно, мало: 1-2 недели на все. На фирме отсутствовала подходящая инфраструктура мониторинга приложений, и в мою задачу не входило ее создавать. Вариант с использованием JConsole не подходил из-за необходимости анализировать потребление за продолжительное время и смотреть его после возможных внезапных перезагрузок приложений.

    В одной из фирм, где я работал, было реализовано впечатляющее по удобству и простоте решение для мониторинга Java-приложений на основе RRD Tool. Состояло оно из несложной надстройки на perl-скриптах, обеспечивающих сбор и отображение данных через HTTP и ряда доработок-агентов сбора данных в самом приложении. Для меня это стало идеей решения, однако, времени на написание обвязки над RRD у меня не было.

    После аккуратного поиска нашелся бесплатный инструмент, реализующий необходимую мне надстройку – Cacti. Cacti это приложение, написанное в инфраструктуре Apache-PHP-MySql, позволяющее настраивать сбор и отображение данных мониторинга на основе веб-интерфейса. Разобраться с ним оказалось несложно, пару дней для подъема инфраструктуры, затем настройка и дописывание агентов сбора данных и все.

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

    • Cacti 0.8.7i (самая свежая версия на момент реализации решения)
    • Apache 2.2.21 (движок для Cacti)
    • PHP 5.3.8 (платформа, на которой написана Cacti)
    • MySQL 5.5 (хранение настроек Cacti)
    • RRDTool 1.2.30 (отрисовка диаграмм и хранение данных мониторинга)

    Опишу принцип работы мониторинга на Cacti: при помощи «назначенных заданий» Windows (или cron в unix) производится периодический запуск опроса (polling) агентов сбора данных, которыми в моем случае были: сама JVM (потребление памяти) и специализированные доработки приложения. Собранные сведения размещаются в базе данных RRD – т.е. в циклических буферах в виде файлов. Далее, накопленные данные из RRD можно просматривать через веб-интерфейс Cacti в различных масштабах в разрезе минут, часов, дней, месяцев, др.

    План работы – поднять всю необходимую инфраструктуру, адаптировать анализируемые приложения для сбора данные и настроить сбор и вывод данных в Cacti.

    Настройка инфраструктуры
    PHP

    Добавить путь к php.exe в переменную PATH, тот же путь прописать в переменной PHPRC

    Скопировать файл php.ini-production в php.ini и внести в php.ini следующие изменения:

    extension_dir = c:phpext extension=php_mysql.dll extension=php_snmp.dll extension=php_sockets.dll cgi.force_redirect = 0 date.timezone = «Europe/Moscow»

    Apache

    Добавить в confhttpd.conf следующие строки:
    LoadModule php5_module c:phpphp5apache2_2.dll AddType application/x-httpd-php .php DirectoryIndex index.html index.htm index.php

    MySql

    Добавить путь к mysql.exe в переменную PATH

    Создание схемы cacti:

    mysql —user=root —password create cacti

    Импортируем структуру данных схемы cacti

    mysql —user=root —password cacti < c:apache2htdocscacticacti.sql

    Создаем пользователя cactiuser:

    mysql —user=root —password

    Далее в командной строке MySql:

    Для быстрой проверки работоспособности связки php-mysql-apache я использовал следующих скрипт php:

    Его надо положить в файлик с именем, например, testphp.php, скопировать в директорию Apache htdocs/ и загрузить страничку localhost:8080/testphp.php. Должна появиться надпись «Success».

    Настройка Cacti

    Разархировать дистрибутив cacti в директорию Apache /htdocs.
    Проверить что файл cacti /include/config.php содержит следующие строки:

    $database_default = «cacti»; $database_hostname = «localhost»; $database_username = «cactiuser»; $database_password = «cactiuser»; $database_port = «3306»;

    Зайти на адрес localhost:8080/cacti/ под логином admin/admin.

    В настройках Settings->Paths задать пути к внешним утилитам (рекомендуется использовать пути в стиле Unix, например c:/php/php.exe).

    Настроить запуск команды «php cacti/poller.php» каждые 5 минут (через Windows Scheduled Tasks). У меня для этого используется батничек:

    start /MIN php.exe cactipoller.php

    Настройка Cacti Spine (опционально: это poller, написанный на C++, который используется для ускорения опроса, рекомендуется Cacti)
    Разархивировать spine архив в директорию cacti убедиться что spine.conf содержит следующие строки:

    DB_Host 127.0.0.1 # строго не localhost. DB_Database cacti DB_User cactiuser DB_Password cactiuser DB_Port 3306

    Выбор и настройка сбора данных

    Я пробовал два способа сбора данных – SNMP и опрос JMX сервера в составе JVM и приложений. SNMP поддерживается Cacti и его разумно использовать, если нужно смотреть только использование памяти JVM и, нужно это сделать очень быстро.

    Я начал с SNMP, но после первых успехов перешел на JMX. Cacti не поддерживает JMX, поэтому за дополнительную гибкость надо платить — требуются усилия по написанию приемной и ответной части на Java.

    Ниже привожу соответствующий код.

    Код для опроса JVM по состоянию памяти (аналогично пишется код для произвольного JMX-сервера):

    import java.io.Closeable; import java.io.IOException; import java.lang.management.MemoryMXBean; import java.lang.management.MemoryUsage; import javax.management.JMX; import javax.management.MBeanServerConnection; import javax.management.ObjectName; import javax.management.remote.JMXConnector; import javax.management.remote.JMXConnectorFactory; import javax.management.remote.JMXServiceURL; public class JvmHeapJmxClient < public static void main(String[] args) < JMXConnector jmxc = null; try < String jmxHost = args[0]; String jmxPort = args[1]; String jmxConnectionString = «service:jmx:rmi:///jndi/rmi://» + jmxHost + «:» + jmxPort + «/jmxrmi»; JMXServiceURL url = new JMXServiceURL(jmxConnectionString); jmxc = JMXConnectorFactory.connect(url, null); MBeanServerConnection mbsc = jmxc.getMBeanServerConnection(); ObjectName memoryMBeanName = new ObjectName(«java.lang:type=Memory»); MemoryMXBean memoryMBeanProxy = JMX.newMXBeanProxy(mbsc, memoryMBeanName, MemoryMXBean.class, true); MemoryUsage memoryUsage = memoryMBeanProxy.getHeapMemoryUsage(); echo( «used:» + memoryUsage.getUsed() + » » + «committed:» + memoryUsage.getCommitted() + » » + «init:» + memoryUsage.getInit() + » » + «max:» + memoryUsage.getMax()); >catch(Exception e) < e.printStackTrace(); >finally < closeStream(jmxc); >> private static void echo(String msg) < System.out.println(msg); >private static void closeStream(Closeable stream) < try < if (stream != null) < stream.close(); >> catch (IOException e) < e.printStackTrace(); >> >

    Код Java для запуска JMX. Все эти сложности нужны для фиксирования порта и имени хоста, что требуется при наличии межсетевого экрана. Для каждого сервиса требуется по 2 порта, как видно из кода – один для http доступа, другой для RMI. Распределение портов очевидно можно сделать по-другому (в данном случае RMI-порт = http-порт + 1), в том числе явно указать оба порта. В строку запуска приложений нужно будет добавить следующие слова (jmxagent – jar-файл с кодом агента):

    -Djmxagent.port= -Djmxagent.host= -javaagent:jmxagent.jar
    import java.io.IOException; import java.lang.management.ManagementFactory; import java.rmi.registry.LocateRegistry; import java.util.HashMap; import javax.management.MBeanServer; import javax.management.remote.JMXConnectorServer; import javax.management.remote.JMXConnectorServerFactory; import javax.management.remote.JMXServiceURL; public class JmxFirewallAgent < private JmxFirewallAgent() < >public static void premain(String agentArgs) throws IOException < try < final int rmiRegistryPort = Integer.parseInt(System.getProperty(«jmxagent.port»)); LocateRegistry.createRegistry(rmiRegistryPort); final int rmiServerPort = rmiRegistryPort + 1; MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); HashMapenv = new HashMap(); final String hostname = System.getProperty(«jmxagent.host»); JMXServiceURL url = new JMXServiceURL(«service:jmx:rmi://» + hostname + «:» + rmiServerPort + «/jndi/rmi://» + hostname + «:» + rmiRegistryPort + «/jmxrmi»); JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(url, env, mbs); cs.start(); > catch (Exception e) < e.printStackTrace(); >> >

    Далее идут скриншоты наиболее важных настроек Cacti.

    Настройка опроса – важный момент в общих настройках Cacti. Я использую Spine, опрос запускается каждые 5 минут, данные снимаются каждые 10 секунд. Смотрите далее настройки RRD в составе Cacti – их требуется продумать заранее, т.к. далее менять без перезаписи базы RRD проблематично. Здесь неплохая подборка советов по этим настройкам:

    Мои настройки RRD.

    Пример содержимого одной настройки:

    Настраивам Device – это сервер с IP-адресом, с которого будут забираться данные. У нас несколько серверов, на каждом из них запущено несколько сервисов Java.

    Настраиваем Data Input Method – задание способа сбора данных. В моем случае это батничек, который запускает Java программу опроса JMX (ее исходные коды были приведены выше.) Входные параметры у него это адрес и порт сервера, т.е. Java-приложения.

    Пример описания входного параметра – в данном случае адрес сервера. Используется предопределенное ключевое слово – hostname, которое автоматически заполняется Cacti. Второй параметр будет заполняться для каждой настройки сбора данных Data Source, как будет видно дальше.

    Выходные параметры, которые возвращает батничек. Cacti понимает их в формате:

    ключ1:значение1 ключ2:значение2

    Моя программа возвращает 4 выходных значения, вот пример задания одного из них (commited):

    Далее создаем Data Template – шаблон для задания источников данных. Самая важная настройка в Cacti, на мой взгляд. Шаблон связывается с настройкой базы RRD, в нем указываются параметры для хранения в базе (Data Source Item) и дополнительные настройки, в данном случае это jmx host и jmx port, первый, как уже говорилось, заполняется автоматически, второй будет заполняться на каждом источнике данных, т.е. источник данных будет соответствовать одному Java-приложению.

    На основе шаблона создается Data Source – источник данных, которые затем можно будет отображать на диаграммах Graph. В источнике указывает Device, к которому надо подключаться для сбора данных, шаблон источника, имя и месторасположение базы данных RRD. В моем случае также требуется указать дополнительный параметр – порт JMX.

    Важный момент – при существенных обновлениях настроек сбора данных в Data Source или Data Template (например, удаление-добавление параметров Data Source Item) требуется пересоздание базы данных RRD. Это можно сделать руками вне Cacti (я до этого не добрался) или пересоздать Data Source с потерей всех предыдущих данных. Это, видимо, самое неприятная особенность связки Cacti-RRD, с которой мне пришлось столкнуться.

    Приступаем к отображению данных путем задания шаблонов диаграмм Graph Template. Настройки в основном задают способ визуализации данных. Требуется указать параметры из Data Template, которые требуется выводить на диаграмме и в каком виде. Насколько я понимаю все эти настройки – непосредственная оболочка над командным интерфейсом RRD.

    Пример задания параметра Data Source. Я использую для отображения потребления памяти 5 элементов на диаграмме: Макс, мин, и текущее потребление в виде сплошной закраски (порядок вывода важен!), затем два параметра – максимальное выделенное и зарезервированное потребление в виде линий. Пример, см. ниже.

    Диаграмма Graph – задается шаблон, сервер и задание соответствия между конкретным Data Source и паметрами шаблона диаграммы:

    Пример окончательной диаграммы использующей все заданные настройки: Видно что потреблениев среднем на уровне 3Гб, однако довольно часто достигает максимальной выделенной границы в 6Гб (-Xmx). Данные можно смотреть с произвольной детальностью (от 1 тика сбора до 2лет, как на примере и больше). Все это зависит от заданных настроек базы RRD. С моими настройками мне вполне хватило информации для решения проблем с потреблением.

    На этом описание моего решения заканчивается. Подчеркиваю, что основная идея решения – это скорость реализации при высоком качестве полученного результата. Вопросы и идеи по улучшению приветствуются.

    Ту часть настроек, которая касается моих специфических параметров производительности я приводить не стал, поскольку они полностью аналогичны уже описанным.

    Спасибо за внимание!

    Выводы:

    Cacti позволил мне успешно решить задачу быстрой настройки мониторинга Java-приложений. Если вам нужно быстро с нуля сделать мониторинг – рекомендую это как один из рабочих вариантов. Если в ваши планы входит построение долгосрочного мониторинга, то, на мой взгляд, имеет смысл посмотреть на следующие варианты: внедрять мощные системы типа Nagios, либо писать свою специализированную надстройку над RRD. Плюсы и минусы Cacti:

    • Довольно быстрое нарастание количества однотипных настроек в случае большого числа сред и серверов приложений Java.
    • Ограниченная производительность «неродных» JMX решений для Cacti.
    • Высокая скорость развертывания при минимальном дополнительном кодировании
    • Простота и удобство интерфейса просмотра диаграмм и их настройки (не нужно сразу учить что-то сложное)

    Источник: habr.com

    Установка Cacti на Centos 7

    Инструкция по установке системы для мониторинга серверов и сетевых устройств Cacti на виртуальный сервер под управлением Centos 7.

    Что такое Cacti?

    Cacti — это инструмент с открытым исходным кодом для мониторинга сервера, визуализации собранных данных и построения графиков, написан на PHP/MySQL. Cacti использует RRDTool (инструмент для работы с базами данных Round-Robin) для хранения данных и генерации графики, сборка периодических данных происходит через Net-SNMP — набор приложений для реализации SNMP (Simple Network Management Protocol).

    Настройка репозиториев

    Необходимо отключить функции безопасности SELinux, для этого с помощью текстового редактора, например vi откройте следующий системный файл:
    vi /etc/sysconfig/selinux

    Измените значение параметра SELINUX на disabled:
    SELINUX=disabled

    Перезагрузите виртуальный сервер, чтобы изменения вступили в силу:
    reboot

    Настройте репозиторий EPEL:
    rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

    Установите репозиторий Remi:
    wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
    rpm -Uvh remi-release-7.rpm

    Выведите список доступных репозиториев:
    yum repolist

    Установка компонентов

    В первую очередь необходимо установить веб-сервер Apache:
    yum install httpd httpd-devel
    systemctl start httpd

    Установите утилиты RRDTool и SNMP, для дальнейшей обработки и визуализации данных:
    yum install net-snmp net-snmp-utils net-snmp-libs rrdtool
    systemctl start snmpd

    Далее установите MariaDB и запустите сервис:
    yum install mariadb-server
    systemctl start mariadb

    Запустите скрипт, с помощью которого задайте пароль администратора и дополнительные параметры безопасности:
    mysql_secure_installation

    Запустите следующую команду, чтобы установить несколько компонентов PHP:
    yum —enablerepo=remi install php-mysql php-pear php-common php-gd php-devel php php-mbstring php-cli php-intl php-snmp

    Создание базы данных Cacti

    Подключитесь к СУБД MariaDB:
    mysql -u root -p

    Созданный пользователь базы данных должен иметь доступ к таблице mysql.time_zone_name. Поэтому необходимо импортировать mysql_test_data_timezone.sql в базу данных MySQL:
    mysql -u root -p mysql < /usr/share/mysql/mysql_test_data_timezone.sql

    Выполните вход в MariaDB:
    mysql -u root -p

    Оптимизация базы данных

    Для повышения производительности нужно изменить параметры базы данных. Откройте файл конфигурации.
    vi /etc/my.cnf.d/server.cnf

    Вставьте следующие строки в секцию [mysqld]:
    event_scheduler=ON
    plugin-load=BLACKHOLE=ha_blackhole.so
    blackhole=FORCE
    collation-server = utf8mb4_unicode_ci
    init-connect=’SET NAMES utf8′
    character-set-server = utf8mb4
    max_heap_table_size = 128M
    max_allowed_packet = 16777216
    tmp_table_size = 64M
    join_buffer_size = 64M
    innodb_file_per_table = on
    innodb_buffer_pool_size = 512M
    innodb_doublewrite = off
    innodb_additional_mem_pool_size = 80M
    innodb_lock_wait_timeout = 50
    innodb_flush_log_at_trx_commit = 2
    innodb_file_format = Barracuda
    innodb_large_prefix = 1
    innodb_flush_log_at_timeout = 3
    innodb_read_io_threads = 32
    innodb_write_io_threads = 16
    innodb_io_capacity = 5000
    innodb_io_capacity_max = 10000

    Перезапустите СУБД для применения изменений:
    systemctl restart mariadb.service

    Установка и конфигурация Cacti

    Установите Cacti используя yum:
    yum -y install cacti

    Импортируйте файл базы данных cacti по умолчанию в созданную базу данных.
    cd /usr/share/doc/cacti-1.2.5/

    Примечание: версия Cacti может отличаться.

    Импортируйте SQL-файл:
    mysql -u root -p fosslinuxcacti < cacti.sql

    Отредактируйте файл конфигурации Cacti, указав базу данных, пароль, пользователя и пр.:
    vi /usr/share/cacti/include/config.php

    Измените следующие параметры:
    $database_type = ‘mysql’;
    $database_default = ‘fosslinuxcacti’;
    $database_hostname = ‘localhost’;
    $database_username = ‘fosslinuxuser’;
    $database_password = ‘password’;
    $database_port = ‘3306’;
    $database_ssl = false;

    Настройка Apache

    Выполнить настройку Apache необходимо для удаленного подключения:
    vi /etc/httpd/conf.d/cacti.conf

    Замените строку Require host localhost на Require all granted и Allow from localhost на Allow from all.
    Файл будет выглядеть следующем образом:
    Alias /cacti /usr/share/cacti

    Далее откройте файл конфигурации PHP:
    vi /etc/php.ini

    Измените значения следующих параметров:
    date.timezone = Europe/Minsk
    memory_limit = 800M
    max_execution_time = 360

    Перезапустите запущенные сервисы:
    systemctl restart httpd.service
    systemctl restart mariadb.service
    systemctl restart snmpd.service

    Не забудьте настроить Firewall, чтобы подключиться Cacti:
    firewall-cmd —permanent —zone=public —add-service=http
    firewall-cmd —reload

    Подключение к веб-интерфейсу Cacti

    Перейдите в браузере по следующему адресу:
    /cacti

    При первом подключении используйте логин и пароль admin/admin:

    Аутентификация при первом подключении Cacti

    Вам сразу же необходимо будет изменить значения по умолчанию:

    Изменение пароля по умолчанию в Cacti

    Далее необходимо выбрать язык и принять пользовательское соглашение:

    Выбор языка и принятие пользовательского соглашения Cacti

    На следующем шаге будет выполнена проверка наличия зависимостей и необходимых конфигураций PHP и MySQL:

    Проверка наличия зависимостей и необходимых конфигураций PHP и MySQL

    Выберите тип установки, можно оставить значение по умолчанию:

    Выборка типа установки Cacti

    Далее будет выполнена проверка прав и доступов:

    Проверка прав и доступов

    Выберите профиль по умолчанию и подсети для сканирования:

    Выбор профиля по умолчанию и подсети для сканирования Cacti

    На следующих шагах вы можете выбрать все шаблоны и таблицы:

    Настройка Critical Binary Locations and Versions Cacti

    Выбор и настройка шаблона Cacti

    Подтверждение установки Cacti

    По завершении установки отобразится лог с ошибками, если они имели место быть:

    Лог с ошибками при установке Cacti

    Завершение установки Cacti

    Далее вы можете зайти в панель Cacti и приступать к мониторингу:

    Панель управления Cacti

    Пример графиков со статистикой:

    Источник: serverspace.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru