Contents
- Введение
- Установка
- Первоначальная настройка Cacti
- Настройка SNMP клиентов
- Добавление данных в Cacti
- Добавление дополнительных плагинов для Cacti
- Создание собственных плагинов для Cacti
- Полезные ссылки
Cacti ver 1.1 20.06.2007
Введение
Вы можете сказать среднюю загрузку ЦП на Вашем сервере ?
Вы можете сказать на сколько процентов увеличилась средняя загрузка памяти на Вашем сервере за последние 3 месяца?
Вы знаете сколько DNS запросов приходит на Ваш сервер или Вы сможете сказать на сколько процентов увеличилось количество спама приходящего на Ваш почтовый сервер за последние пол года ?
Можете ли Вы точно сказать среднюю нагрузку на сеть в рабочие часы?
Если Ваш ответ на некоторые из этих вопросов «Нет» а Вы хотите чтобы ответом было «Да », тогда данная статья для Вас, в ней предпринята попытка наиболее подробно описать процесс установки и настройки одного из средств мониторинга под названием Cacti.
Cacti – позволяет снимать учетные данные с любого сетевого устройства по протоколу SNMP (при учете, что оборудование умеет работать с данным протоколом).
Из наиболее важных преимуществ Cacti по сравнению со своими более простыми собратьями типа Mrtg, можно отметить прекрасный WEB интерфейс, отличную расширяемость за счет написания простых модулей реализующих необходимый дополнительный функционал, наличие готовых шаблонов для различного сетевого оборудования и т. д., но стоит отметить и несколько проблем о которых нельзя не упомянуть, первоначальная установка и настройка Cacti требует от системного администратора больше времени и терпения чем установка того же Mrtg, также для своей работы Cacti необходимо наличие MySQL, PHP, RRDTool на сервере где он будет установлен.
Вот так схематично выглядит схема работы Cacti:
Есть парк сетевого оборудования, которое умеет работать с протоколом SNMP (управляемые свичи, маршрутизаторы, рабочие станции и сервера под управлением ОС Unix, Linux, Windows и т. д.), сервером с установленным на него Cacti с данного оборудования периодически снимаются необходимые данные. Определенному кругу машин в сети разрешено заходить на этот сервер и просматривать собранные данные в Cacti с помощью WEB интерфейса.
Вот несколько из примеров графиков которые можно получить с помощью Cacti.
С момента написания первой версии данной статьи многое изменилось в лучшую сторону, а именно пакет Cacti теперь входит в состав обновлений для дистрибутива ASPLinux Server 4, что позволяет пользователям этой ОС установить его штатными средствами при помощи yum.
В данной статье предполагается, что Вы используете одну из ниже перечисленных ОС (ASP Linux Server 4, Fedora Core 3-6 , Fedora 7, CentOS, Yumex и др.).
Установка
Предполагается, что установка выполняется из под привилегированного пользователя root.
ASP Linux Server 4
Убедитесь, что у Вас установлен yum:
rpm -q yum
Убедитесь что репозиторий обновлений включен просмотрите содержимое файла /etc/yum.repos.d/asplinux-updates.repo оно должно быть следующим:
[updates] name=ASPLinux $releasever - $basearch - Updates baseurl=
Дайте команду установить cacti :
yum install cacti
Вы должны увидеть примерно следующее:
# yum install cacti Setting up Install Process Setting up repositories updates 100% |=========================| 1.2 kB 00:00 Parsing package install arguments Resolving Dependencies --> Populating transaction set with selected packages. Please wait. ---> Downloading header for cacti to pack into transaction set. cacti-0.8.6j-1.101asp.noarch 100% |=========================| 53 kB 00:00 ---> Package cacti.noarch 0:0.8.6j-1.101asp set to be updated --//-- Dependencies Resolved ============================================================================= Package Arch Version Repository Size ============================================================================= Installing: cacti noarch 0.8.6j-1.101asp updates 1.1 M ============================================================================= Install 1 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 1.1 M Is this ok [y/N]:
нажмите 'y' и начнется процесс установки.
Fedora Core 3-6
В данных дистрибутивах пакет Cacti содержится в дополнительном репозитории extras который включен по умолчанию.
Процесс установки Cacti аналогичен установке ASP Linux Server 4 т. е. Просто наберите:
yum install cacti
CentOS, Yumex,Scientific Linux и прочие клоны RHEL
Для установки Вам потребуется настроить yum для работы с репозиторием Dag Wieers. Вам необходимо создать файл /etc/yum.repos.d/dag.repo следующего содержания для дистрибутивов основанных на RHEL4 :
- Name: RPMforge RPM Repository for Red Hat Enterprise 4 - dag
URL: http://rpmforge.net/
[rpmforge] name = Red Hat Enterprise $releasever - RPMforge.net - dag #baseurl = mirrorlist = enabled = 1 gpgcheck = 0
и такого содержания для дистрибутивов основанных на RHEL5:
# Name: RPMforge RPM Repository for Red Hat Enterprise 5 - dag # URL: [rpmforge] name = Red Hat Enterprise $releasever - RPMforge.net - dag #baseurl = mirrorlist = enabled = 1 gpgcheck = 0
После этого выполните: yum install cacti
Первоначальная настройка Cacti
Настройка MySQL
Cacti для своей работы требует установленного сервера Mysql.
Проверьте установлен ли у Вас в системе пакет mysql-server выполнив команду:
rpm -q mysql-server
Если данный пакет у Вас с системе не установлен его можно установить при помощи yum выполнив:
yum install mysql-server
Запустите сервер Mysql командой
service mysqld start
Войдите в интерфейс управления (MySQL Monitor) командой
mysql
Вы должны увидеть такое приглашение:
mysql>
Создайте новую базу данных с именем cacti командой:
create database cacti;
Выйдите из MySQL Monitor набрав \q.
В состав пакета Cacti входит скрипт позволяющий автоматически создать все необходимые таблицы в БД для работы.
Выполните:
mysql cacti </usr/share/doc/cacti-0.8.6j/cacti.sql
Вновь войдите в интерфейс управления MySQL командой
mysql cacti
И выполните команду
mysql> show tables;
Если в ответ на данную команду вы увидите следующий список таблиц в БД:
+---------------------------+ | Tables_in_cacti | +---------------------------+ | cdef | | cdef_items | | colors | | data_input | | data_input_data | | data_input_fields | | data_local | | data_template | | и так далее | +---------------------------+ 48 rows in set (0.00 sec)
то Вы все сделали верно, таблицы в БД созданы и можно двигаться дальше.
Теперь нам необходимо дать права созданную нами БД пользователю под которым cacti будет подключаться к серверу.
Для этого в интерфейсе управления MySQL выполните:
grant all on cacti.* to username@localhost identified by 'password';
Тем самым мы дали все права на базу cacti пользователю username доступ которому разрешен только с хоста 127.0.0.1, и установили этому пользователю пароль 'password'.
Для применения назначенных прав на базу вы должны выполнить инструкцию:
flush privileges;
Теперь вы можете выйти из MySQL Monitor.
Проверьте, что сервер MySQL включен в автоматический запуск:
chkconfig --list mysqld
Вывод команды будет примерно следующим:
mysqld 0:выкл 1:выкл 2:выкл 3:выкл 4:выкл 5:выкл 6:выкл
Если Вы работаете на 3 уровне запуска системы (что является обычным для сервера) добавьте запуск MySQL на этом уровне:
chkconfig --level 3 mysqld on
Настройка Cacti
Перейдите в каталог /etc/cacti и отредактируйте файл db.php прописав в нем корректное имя пользователя и пароль для доступа в БД MySQL.
<?php /* make sure these values refect your actual database/host/user/password */ $database_type = "mysql"; $database_default = "cacti"; $database_hostname = "localhost"; $database_username = "cacti"; $database_password = "password"; $database_port = "3306"; ?>
Настройка WEB сервера Apache
Cacti для своей работы требует установленного сервера Apache.
Проверьте установлен ли у Вас в системе пакет httpd выполнив команду:
rpm -q httpd
Если данный пакет у Вас с системе не установлен его можно установить при помощи yum выполнив:
yum install httpd
Перейдите в каталог /etc/httpd/conf.d и отредактируйте файл cacti.conf добавив строку Allow from <ip адрес>
Где <ip адрес> хоста которому разрешено подключаться к Cacti.
Т.е. файл cacti.conf может выглядеть следующим образом:
Alias /cacti /usr/share/cacti
<Directory /usr/share/cacti/>
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from 10.0.0.1
</Directory>
Запустите сервис httpd командой:
service httpd start
Добавьте сервис httpd в автоматический запуск на Вашем уровне (в примере 3) запуска системы:
chkconfig --level 3 httpd on
Периодический запуск с помощью Cron
Cacti снимает данные со всех клиентских устройств с помощью php скрипта который запускается с помощью системного планировщика cron каждые 5 минут, т.е. для корректной работы Cacti Вам необходимо проверить запущен ли демон crond в системе.
chkconfig --list crond
как мы видим crond стартует на нашем текущем (3) уровне запуска.
crond 0:выкл 1:выкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл
осталось проверить запущен ли демон crond в данный момент:
ps ax|grep crond
Если Вы увидели что-то подобное, то это обозначает, что демон работает в данный момент.
2083 ? Ss 0:00 crond
Проверка работоспособности
Запустите любой броузер и в строке адреса наберите http://<ip адрес>/cacti/
Где вместо <ip адрес> напишите ip адрес, либо доменное имя машины на которой Вы установили Cacti.
В том случае если Вы все настроили верно в окне броузера Вы должны увидеть следующее:
Нажмите Next
Убедитесь, что выбран пункт «New Install» и нажмите Next
В следующем окне Вам предложат ввести пути до утилит которые Cacti использует в своей работе, оставьте данные в этих полях по умолчанию и нажмите Finish.
Первоначальная настройка Cacti закончена. В следующем окне Вам предложат ввести имя пользователя и пароль для администрирования Cacti. Введите имя пользователя admin пароль admin.
Вам сразу же предложат сменить пароль администратора, в следующем окне введите новый пароль и его подтверждение.
Сразу после задания нового пароля Вы попадете в интерфейс управления Cacti.
Настройка SNMP клиентов
Cisco
Для настройки SNMP выполните вход на маршрутизатор под пользователем, перейдите в привилегированный режим «enable», затем выполните:
#conf t (config)#access-list 555 permit <ip адрес> (config)#access-list 555 deny any (config)#snmp-server community public RO 555 (config)#exit #write memory #exit
Где <ip адрес> - это адрес машины с установленным пакетом Cacti.
Linux/Unix
Убедитесь, что на Linux машине установлен пакет net-snmp:
rpm -q net-snmp
Если данный пакет не установлен, то Вам следует установить его:
yum install net-snmp
Перейдите в каталог /etc/snmp/ внесите изменения в файл snmp.conf Он должен выглядеть следующим образом:
syslocation Test. syscontact INF <mail@test.ru> # sec.name source community (password) com2sec Mybox localhost public com2sec cacti <ip адрес> public com2sec Outside default public # group.name sec.model sec.name group RWGroup v2c Mybox group ROGroup v1 cacti group ROGroup v2c cacti group Others v2c Outside view all included .1 80 view system included system fe # context sec.model sec.level prefix read write notif access ROGroup "" any noauth exact all none none access RWGroup "" v2c noauth exact all all all access Others "" v2c noauth exact system none all
Где вместо <ip адрес> поставьте ip адрес машины с установленным пакетом Cacti.
Затем выполняем команду:
service snmpd start
Добавьте сервис snmpd в автоматический запуск на Вашем уровне (в примере 3) запуска системы:
chkconfig --level 3 smnpd on
Добавление данных в Cacti
Добавление хоста Cisco
Перейдите в пункт 'Devices' с левой части экрана.
Нажмите кнопку ADD для добавления нового устройства. В появившемся окне
Заполните поля следующим образом:
Description – Описание маршрутизатора/коммутатора , например Cisco XXX. Hostname – IP адрес маршрутизатора/коммутатора. Host Template – В ниспадающем меню выберите пункт «Cisco Router». Блок параметров SNMP – Введите имя SNMP Community, Username, Password, Version, SNMP Port – подробнее о настройке смотрите пункт данной статьи «Настройка SNMP клиентов» - «Cisco». После заполнения всех необходимых параметров нажмите «Create».
Перед вами открылось окно с настройками хоста.
В верхней части экрана показана информация которую Cacti смогла снять по SNMP, в случае если Вы не настроили соответствующим образом оборудование или указали неверные параметры SNMP в настройках устройства, то Cacti должна выдать сообщение SNMP Error.
Проверьте на данной странице, что в разделе «Associated Graph Templates» уже добавлен пункт «Cisco - CPU Usage» и в разделе «Associated Data Queries» добавлен пункт «SNMP - Interface Statistics» - дело в том, что выбирая готовый шаблон «Cisco Router» для хоста Вы автоматически добавили необходимые нам для отображения данные.
<<<cacti15.png>>
- Теперь выберите пункт «Create Graphs for this Host» сверху страницы.
В появившемся окне выберите пункты меню данные которых Вас интересуют в графическом представлении (загрузка CPU, сетевые интерфейсы).
После Выбора необходимых пунктов нажмите «Create».
В появившемся окне Вам предлагают Выбрать Цвет графика отображающего загрузку CPU, после выбора необходимого Вам цвета нажмите «Create».
Вы снова попадете в настройки хоста, только в верхней части экрана появятся сообщения о успешном создании необходимых Вам графических данных.
Теперь Нам осталось создать графики. Дело в том, что в Cacti все графические данные представляются в виде «дерева». По умолчанию создано одно дерево с именем «Default Tree», Вы можете создавать свои графические деревья таким образом группируя по каким-нибудь признакам группы хостов. В данном примере Мы с Вами добавим вновь созданный хост Cisco в дерево по умолчанию «Default Tree». Перейдите в пункт «Graph Trees» в левой части экрана. В появившемся окне выберите «Default Tree».
В меню «Tree Items» нажмите «Add».
В «Parent Item» оставьте «root» В «Tree Item Type» выберите значение «Host» В «Host» выберите то имя которое Вы присвоили вашему устройству Cisco. После заполнения всех полей нажмите «Create».
добавили все необходимые данные теперь Вам нужно выждать несколько запусков пулера Cacti (он стартует через cron с интервалом в 5 минут) чтобы на графиках появились первые данные.
Добавление хоста Linux/Unix
Перейдите в пункт «Devices» в левой части экрана.
Нажмите «Add» для добавления нового хоста. В появившемся окне заполните поля следующим образом: Description – Описание сервера. Hostname – IP адрес, дибо доменное имя хоста. Host Template – оставьте значение данного параметра в «None». Также заполните раздел «SNMP Options» в соответствии с настройками которые Вы сделали на контролируемом сервере, правильно заполните поля SNMP Community, SNMP Version,SNMP Port и т.д.
После заполнения всех необходимых параметров нажмите «Create». Откроется окно с установками вновь созданного хоста.
Перейдите в нижнюю часть экрана, там находится 2 раздела «Associated Graph Templates» и «Associated Data Queries»
Вам необходимо добавить в раздел «Associated Graph Templates» 3 шаблона «ucd/net - CPU Usage», «ucd/net - Load Average», «ucd/net - Load Average», а в раздел «Associated Data Queries» добавить «SNMP - Interface Statistics» и «SNMP - Get Mounted Partitions».
Теперь выберите пункт «Create Graphs for this Host» сверху страницы, и в появившемся окне выберите необходимые данные для графического отображения.
После нажатие на кнопку «Create» необходимые данные будут добавлены.
Теперь перейдите в пункт меню «Graph Trees», выберите дерево по умолчанию «Default Tree», нажмите кнопку «ADD».
В появившемся меню
В «Parent Item» оставьте «root» В «Tree Item Type» выберите значение «Host» В «Host» выберите то имя которое Вы присвоили вашему хосту. После заполнения всех полей нажмите «Create».
Все графики созданы и размещены.
Для просмотра графических данных перейдите в меню «Graphs» в верхней части экрана и выберите созданный хост.
Добавление дополнительных плагинов для Cacti
Предполагается, что Сacti уже настроен и функционирует в Вашей сети, все приведенные ниже плагины были проверенны на работоспособность под OS CentOS 4.4, также подразумевается, что Cacti работает на отдельной машине в сети и собирает данные со всех хостов по протоколу SNMP.
Статистика работы DNS сервера BIND.
Предположим, что у Вас в сети уже настроен и функционирует DNS сервер Bind, и Вам как системному администратору хотелось бы получать данные о том, сколько DNS запросов он обслуживает в данный момент. Для решения данной задачи воспользуемся плагином BIND 9 Statistics Template.
Также подразумевается, что DNS сервер BIND работает в chroot среде.
Настройка BIND
Для корректной работы данного плагина понадобится внести изменения в конфигурационный файл Bind по умолчанию он находится в каталоге /var/named/chroot/etc/.
В секцию options добавьте 2 строки:
zone-statistics yes; statistics-file "/var/tmp/named.stats";
т. е. полностью секция options может выглядеть примерно так:
options {
directory "/var/named";
query-source address * port 53;
max-cache-size 134217728;
version "My DNS Server";
allow-recursion { my_net; };
zone-statistics yes;
recursive-clients 500;
statistics-file "/var/tmp/named.stats";
};
После внесения изменений в конфигурационный файл выполните перезагрузку DNS сервера командой:
service named restart
Либо просто скажите Named перечитать свой конфигурационный файл командой:
rndc reload
Настройка скриптов
Скачайте набор скриптов и графический шаблон по адресу http://uversaconsulting.net/download/bind9-stats-1.0.tar.gz .
Распакуйте архив:
tar -zxvf bind9-stats-1.0.tar.gz
Данные развернутся в каталог bind9-stats в текущем каталоге, в котором в свою очередь находится 2 каталога local и snmp. Для дальнейшей настройки Нам понадобится 2 скрипта bind9-genstats.sh который находится в каталоге bind9-stats и bind9-stats-snmpd.pl из каталога snmp.
На DNS сервере создайте каталог /var/named/chroot/cacti_script
mkdir /var/named/chroot/cacti_script
перенесите в него 2 файла bind9-genstats.sh и bind9-stats-snmpd.pl.
Внесите следующие изменения в файл bind9-genstats.sh:
STAT_FILE=/var/named/chroot/var/tmp/named.stats
вместо
STAT_FILE=/var/cache/bind/named.stats
Внесите следующие изменения в файл bind9-stats-snmpd.pl:
$STAT_FILE = "/var/named/chroot/var/tmp/named.stats"
вместо
$STAT_FILE = "/var/cache/bind/named.stats";
Теперь необходимо внести изменение в конфигурацию демона CRON. Создайте новый файл задания для cron:
touch /etc/cron.d/bind
Следующего содержания:
*/5 * * * * root /var/named/chroot/cacti_script/bind9-genstats.sh
Настройка SNMP
Внесите изменение в конфигурацию snmp т. е. в файл /etc/snmp/snmp.conf добавьте строку
pass .1.3.6.1.4.1.2021.55 /usr/bin/perl /var/named/chroot/var/named/cacti_script/bind9-stats-snmpd.pl
Перезапустите snmp командой:
service snmpd restart
Настройка Cacti
Перейдите в раздел «Import Templates» и импортируйте графический шаблон
Перейдите в секцию «Devices» выберите хост на котором мы настраивали плагин для DNS сервера.
В секции «Associated Data Queries» добавьте BIND 9 Statistics (SNMP)
Перейдите в раздел «Create Graphs for this Host» и поставьте галочку напротив Data Query [BIND 9 Statistics (SNMP)].
Результат работы плагина
Статистика времени отклика HTTP сервера.
Настройка плагина
Скачайте скрипт http://forums.cacti.net/download.php?id=4092
Графический шаблон времени отклика по TCP http://forums.cacti.net/download.php?id=4094
Графический шаблон времени отклика HTTP http://forums.cacti.net/download.php?id=4095
На том сервере, где работает Сacti разверните полученный архив:
unzip -x scripts.zip
Распакуется 2 файла http_response_time.pl и tcp_response_time.pl.
Данные файлы Вам необходимо положить в каталог /Путь_до_cacti/script
По умолчанию Cacti устанавливается в каталог /usr/share/cacti т. е.
cp http_response_time.pl /usr/share/cacti/script cp tcp_response_time.pl /usr/share/cacti/script chmod +x http_response_time.pl tcp_response_time.pl
Настройка Cacti
Перейдите в раздел «Import Templates» и импортируйте графический шаблон
Перейдите в секцию «Devices» выберите хост для которого Вы хотите контролировать время отклика HTTP.
В секции "Associated Graph Templates" добавьте шаблон "HTTP Response Time"
Перейдите в раздел "Create Graphs for this Host" выберите необходимый график.
Результат работы плагина
Статистика количества соединений по протоколам FTP,SMB,HTTP,TELNET,SSH.
Настройка плагина
Скачайте плагин http://forums.cacti.net/download.php?id=2777 и дополнение к нему http://forums.cacti.net/download.php?id=4101 .
Распакуйте полученные архивы:
unzip -x active_tcp_conns.zip unzip -x active_http_connections.zip
Файл tcp_conns.sh скопируйте в каталог /Путь_до_cacti/script
Настройка Cacti
Загрузите в Cacti графические шаблоны
cacti_graph_template_snmp_active_http_connections.xml
graph_active_ftp_conns.xml
graph_active_samba_conns.xml
graph_active_ssh_conns.xml
graph_active_telnet_conns.xml
В настройках хоста для которого необходим контроль активных соединений добавьте данные шаблоны и создайте соответствующие графики.
Результат работы плагина
Создание собственных плагинов для Cacti
Цель данного раздела научить Вас создавать свои собственные плагины для Cacti, для примера возьмемся реализовать плагин осуществляющий графическое отображения количества pop3 сессий к почтовому серверу. Т.к. Pop3 сервером в большинстве современных дистрибутивов является Dovecot, то и анализировать мы будем его «логи».
Схема работы плагина будет выглядеть следующим образом: При запуске сервера будет стартовать скрипт который будет запускать парсер логов Dovecot. Данный парсер собирает данные о количестве подключений к Dovecot по протоколу pop3 и записывает эти данные в файл. Также необходимо будет внести изменения в файл конфигурации snmp для того чтобы Cacti мог получать данные о количестве подключений по стандартному протоколу SNMP.
Ниже приведенный скрипт который «парсит» лог файл Dovecot, создан на основе Perl скрипта написанного Jason Warnes для анализа логов Sendmail.
Создайте в каталоге /opt файл pop3.pl следующего содержания:
#!/usr/bin/perl
$debug=1;
$daemon=0;
$syslog=1;
$self="/opt/pop3.pl";
$counterfile="/opt/pop3_counter";
$resetfile="/opt/pop3_reset";
$pidfile="/var/run/pop3_watch.pid";
use Sys::Syslog;
use POSIX;
use Time::HiRes qw( gettimeofday tv_interval );
$|=1;
my $sigset = POSIX::SigSet->new();
my $hupaction = POSIX::SigAction->new('hup_signal_handler',
$sigset,
&POSIX::SA_NODEFER);
my $osigaction = POSIX::SigAction->new('signal_handler',
$sigset,
&POSIX::SA_NODEFER);
POSIX::sigaction(&POSIX::SIGHUP, $hupaction);
POSIX::sigaction(&POSIX::SIGINT, $osigaction);
POSIX::sigaction(&POSIX::SIGTERM, $osigaction);
if($daemon){
$pid=fork;
if($pid) {
open(PID,">".$pidfile) or die "Cannot open PID file: $!.";
print PID ("$pid\n");
close(PID);
}
exit if $pid;
die "Couldn't fork : $!" unless defined($pid);
setsid() or die "Can't start a new session: $!";
$time_to_die=0;
}
sub signal_handler {
$time_to_die=1;
}
sub hup_signal_handler {
if($debug){print "got SIGHUP\n";}
exec($self) or die "Couldn't restart: $!\n";
}
if($syslog){openlog("pop3_log","pid","daemon");}
if($syslog){syslog("notice","Starting.");}
if($debug){print("pop3log is starting.\n");}
# Main part of the program
open(MAILLOG, "tail -n 0 -f /var/log/maillog|") or die "Cannot open maillog: $!.";
while(!$time_to_die){
$line=<MAILLOG>;
if($line=~/pop3-login:/){
$item="pop3";
&readcounterfile;
$counter{$item}++;
if($debug){print("Found pop3 login to $counter{$item}.\n");}
&writecounterfile;
}
}close(SYSLOG);
if($debug){print("pop3log is ending.\n");}
if($syslog){syslog("notice","Ending.");}
unlink($pidfile);
# Subroutine to read the contents of the counter file
sub readcounterfile {
# Read the counter values from the file
if($debug){print("Reading contents of counter file.\n");}
open(COUNTER,$counterfile);
while($line=<COUNTER>){
@line=split(/\:/,$line);
chop($line[1]); # Drop the trailing LF off the value
# Check for reset counter flag file
if(-e $resetfile."_".$line[0]){
if($debug){print("Reset counter flag file found for counter $line[0], resetting counter value to 0.\n");}
$counter{$line[0]}=0;
unlink($resetfile."_".$line[0]);
} else {
$counter{$line[0]}=$line[1];
}
if($debug){print("Counter $line[0] = $counter{$line[0]}.\n");}
}
close(COUNTER);
}
sub writecounterfile {
if($debug){print("Writing counter values to counter file.\n");}
open(COUNTER,">".$counterfile);
# Write each counter item out to the counter file
foreach $item (sort keys(%counter)) {
print COUNTER ($item."\:".$counter{$item}."\n");
}
close(COUNTER);
chmod(0666,$counterfile);
}
В каталоге /opt создайте файл snmp-pop3.pl следующего содержания: Данный файл считывает данные из файла созданного pop3.pl, создает файл pop3_reset по наличию которого pop3.pl производит обнуление счетчиков.
$counterfile="/opt/pop3_counter";
$resetfile="/opt/pop3_reset";
$oid{"pop3"}=".1.3.6.1.4.100.1";
&readcounterfile;
if($counter{$ARGV[0]}==""){$counter{$ARGV[0]}=0;}
if(-e $resetfile."_".$ARGV[0]){$counter{$ARGV[0]}=0;}
print "$oid{$ARGV[0]}\ngauge\n$counter{$ARGV[0]}\n";
&createresetflagfile;
sub readcounterfile {
open(COUNTER,$counterfile);
while($line=<COUNTER>)
{
@line=split(/\:/,$line);
chop($line[1]); # Drop the trailing LF off the value
$counter{$line[0]}=$line[1];
}
close(COUNTER);
}
sub createresetflagfile {
open(RESET,">".$resetfile."_".$ARGV[0]);
close(RESET);
chmod(0666,$resetfile."_".$ARGV[0]);
}
Теперь создадим стартовый скрипт который будет запускать pop3.pl при запуске сервера. В каталоге /etc/init.d создайте файл cactiwatcher следующего содержания:
# Startup script for cacti watcher
#
# chkconfig: 2345 95 05
# description: Run cacti watcher
# pidfile: /var/run/pop3_watch.pid
#
prog="pop3_watch"
PIDFILE=/var/run/${prog}.pid
LOCKFILE=/var/lock/subsys/$prog
start() {
echo -n $"Starting $prog: "
daemon /opt/pop3.pl
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
failure;
fi;
echo
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
if [ -f $PIDFILE ]; then
killproc pop3.pl
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
failure;
fi;
else
RETVAL=1
failure;
fi
echo
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status pop3.pl
;;
restart)
stop
start
;;
condrestart)
if [ -f $LOCKFILE ]; then
stop
start
fi
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
exit 1
esac
exit $RETVAL
- Добавьте cactiwatcher в автоматический запуск.
chkconfig –add cactiwatcher chkconfig –level 3 cactiwatcher on
Осталось внести изменения в файл /etc/snmp/snmpd.conf для того чтобы Cacti мог получать данные о количестве pop3 сессий через стандартный протокол SNMP.
В файл /etc/snmp/snmpd.conf последней строкой добавьте следующую
pass .1.3.6.1.4.100.1 /opt/snmp-pop3.pl pop3
Перезапустите демон snmpd:
service snmpd restart
Дело осталось за малым. Зайдите в интерфейс cacti, перейдите в раздел «Data Templates» нажмите «Add».
Заполните поля: Раздел: Data Templates. Name: «Get pop3 counter» - имя шаблона данных.
Раздел: Data Source. Name: «Get pop3 counters» Data Input Method: Get SNMP Data
Раздел: Data Source Item Internal Data Source Name: pop3 Data Source Type: GAUGE
Нажмите «Save», откроется окно с дополнительными опциями «Custom Data» в котором в поле «OID» Вам необходимо ввести .1.3.6.1.4.100.1
Нажмите «Save» и убедитесь, что Ваш шаблон данных «Data Templates» с именем «Get pop3 counter» присутствует в общем списке шаблонов.
Перейдите в пункт «Graph Templates»
и нажмите «Add».
Перед Вами откроется окно в котором Вам необходимо создать графический шаблон «Graph Templates» на основе только что созданного шаблона данных «Data Templates».
Заполните поля:
Раздел: Template Name: Dovecot counter
Раздел: Graph Template Title: Pop3 Session counter
Остальные поля оставьте в значениях «По умолчанию».
Нажмите «Create», откроется окно с дополнительными настройками создаваемого графического шаблона.
В разделе «Graph Template Items» нажмите «Add». В появившемся окне в меню «Data Source» выберите уже созданный шаблон данных «Data Templates» с именем «Get pop3 counter». В разделе «Color» выберите цвет создаваемого графика В разделе «Graph Item Type» укажите тип графика, «AREA» – значит закрашенная область. В разделе «Consolidation Function» выберите тип «AVERAGE». В разделе CDEF Function выберите «None».
Нажмите «Create»
- Теперь нам необходимо назначить созданный графический шаблон «Graph Template» хосту с которого мы будем снимать информацию.
Перейдите в раздел «Devices».
Выберите Ваш почтовый сервер (Предполагается, что Вы уже добавили этот хост в Cacti).
Перейдите в раздел «Associated Graph Templates» и в выпадающем списке «Add Graph Template:» выберите «Dovecot counter» (т.е. То имя которое мы присвоили нашему графическому шаблону).
После этого наш графический шаблон должен быть в общем списке шаблонов присвоенных данному хосту.
Теперь нажмите ссылку «Create Graphs for this Host» в верхней части настроек хоста
В появившемся списке отметьте галочкой пункт «Dovecot counter»
Настройка закончена. Через некоторое время данные начнут отображаться на графике.
Полезные ссылки
Обзор программ работающих на основе RRDTool
Cacti для нестандартных объектов (Андрей Бородийчук)
Пишем скрипты для Cacti (monitor script cacti)
- Может распространяться свободно при указании авторства.
Автор: Фролов Денис.
