Настройка Cacti в CentOS, RHEL, Fedora

  • Вы можете сказать среднюю загрузку ЦП на Вашем сервере ?
  • Вы можете сказать на сколько процентов увеличилась средняя загрузка памяти на Вашем сервере за последние 3 месяца?
  • Вы знаете сколько DNS запросов приходит на Ваш сервер или Вы сможете сказать на сколько процентов увеличилось количество спама приходящего на Ваш почтовый сервер за последние пол года ?
  • Можете ли Вы точно сказать среднюю нагрузку на сеть в рабочие часы?

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

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

Из наиболее важных преимуществ Cacti по сравнению со своими более простыми собратьями типа MRTG, можно отметить прекрасный веб-интерфейс, отличную расширяемость за счет написания простых модулей реализующих необходимый дополнительный функционал, наличие готовых шаблонов для различного сетевого оборудования и т. д., но стоит отметить и несколько проблем, о которых нельзя не упомянуть: первоначальная установка и настройка Cacti требует от системного администратора больше времени и терпения, чем установка того же MRTG; для своей работы Cacti необходимо наличие MySQL, PHP, RRDTool на сервере, где он будет установлен.

Вот так схематично выглядит схема работы Cacti:

cacti

Есть парк сетевого оборудования, которое умеет работать с протоколом SNMP (управляемые свичи, маршрутизаторы, рабочие станции и сервера под управлением ОС Unix, Linux, Windows и т. д.), сервером с установленным на него Cacti с данного оборудования периодически снимаются необходимые данные. Определенному кругу машин в сети разрешено заходить на этот сервер и просматривать собранные данные в Cacti с помощью веб-интерфейса.

Вот несколько из примеров графиков, которые можно получить с помощью Cacti.

cacti

cacti

cacti

cacti

В данной статье предполагается, что Вы используете однин из ниже перечисленных дистрибутивов: CentOS, Fedora.

Установка

Предполагается, что установка выполняется из под привилегированного пользователя root.

CentOS и RHEL

1. Подключите репозиторий EPEL;

2. Выполните команду:

# yum install cacti

Fedora

В данных дистрибутивах пакет Cacti содержится в стандартных репозиториях.

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

# yum install cacti

Настройка MySQL

Cacti для своей работы требует установленного сервера MySQL.

1. Проверьте установлен ли у Вас в системе пакет mysql-server выполнив команду:

# rpm -q mysql-server

2. Если данный пакет у Вас с системе не установлен, его можно установить при помощи yum выполнив:

# yum install mysql-server

3. Запустите сервер MySQL командой

# service mysqld start

4. Войдите в интерфейс управления (MySQL Monitor) командой

# mysql

Вы должны увидеть такое приглашение:

mysql>

5. Создайте новую базу данных с именем cacti командой:

mysql> create database cacti;

6. Выйдите из MySQL Monitor набрав \q.

7. В состав пакета Cacti входит скрипт, позволяющий автоматически создать все необходимые таблицы в БД для работы. Выполните:

# mysql cacti

8. Вновь войдите в интерфейс управления MySQL командой

mysql> use cacti;

9. И выполните команду

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)

то Вы все сделали верно, таблицы в БД созданы и можно двигаться дальше.

10. Теперь нам необходимо дать права на созданную БД пользователю, под которым cacti будет подключаться к серверу.

11. Для этого в интерфейсе управления MySQL выполните:

mysql> grant all on cacti.* to username@localhost identified by 'password';

Тем самым мы дали все права на базу cacti пользователю username, доступ которому разрешен только с хоста 127.0.0.1, и установили этому пользователю пароль ‘password’.

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

mysql> flush privileges;

Теперь вы можете выйти из MySQL Monitor.

13. Проверьте, что сервер MySQL включен в автоматический запуск:

# chkconfig --list mysqld

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

mysqld          0:выкл  1:выкл  2:выкл  3:выкл  4:выкл  5:выкл  6:выкл

14. Если Вы работаете на 3 уровне запуска системы (что является обычным для сервера) добавьте запуск MySQL на этом уровне:

# chkconfig --level 3 mysqld on

Настройка Cacti

Перейдите в каталог /etc/cacti/ и отредактируйте файл db.php, прописав в нем корректное имя пользователя и пароль для доступа в БД MySQL.

Настройка веб-сервера Apache

Cacti для своей работы требует установленного сервера Apache.

1. Проверьте установлен ли у Вас в системе пакет httpd, выполнив команду:

# rpm -q httpd

2. Если данный пакет у Вас с системе не установлен, его можно установить при помощи yum выполнив:

# yum install httpd

3. Перейдите в каталог /etc/httpd/conf.d/ и отредактируйте файл cacti.conf добавив строку Allow from.

для хоста, которому разрешено подключаться к Cacti.

Т.е. файл cacti.conf может выглядеть следующим образом:

Alias /cacti    /usr/share/cacti
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
    Allow from 10.0.0.1

4. Запустите сервис httpd командой:

# service httpd start

5. Добавьте сервис httpd в автоматический запуск на Вашем уровне запуска системы:

# 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

Проверка работоспособности

1. Запустите любой броузер и в строке адреса наберите http://IP/cacti/.

где вместо IP укажите IP-адрес либо доменное имя машины, на которой Вы установили Cacti.

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

cacti

2. Нажмите Next

cacti

3. Убедитесь, что выбран пункт New Install и нажмите Next

cacti

4. В следующем окне Вам предложат ввести пути до утилит, которые Cacti использует в своей работе. Оставьте данные в этих полях по умолчанию и нажмите Finish. Первоначальная настройка Cacti закончена.

5. В следующем окне Вам предложат ввести имя пользователя и пароль для администрирования Cacti. Введите имя пользователя admin пароль admin.

cacti

6. Вам сразу же предложат сменить пароль администратора, в следующем окне введите новый пароль и его подтверждение.

cacti

Сразу после задания нового пароля Вы попадете в интерфейс управления Cacti.

cacti

Настройка SNMP клиентов

Cisco

Для настройки SNMP выполните вход на маршрутизатор под пользователем, перейдите в привилегированный режим enable, затем выполните:

#conf t
(config)#access-list 555 permit
(config)#access-list 555 deny any
(config)#snmp-server community public RO 555
(config)#exit
#write memory
#exit

где – это адрес машины с установленным пакетом Cacti.

Linux/Unix

1. Убедитесь, что на Linux машине установлен пакет net-snmp:

# rpm -q net-snmp

2. Если данный пакет не установлен, то Вам следует установить его:

# yum install net-snmp

3. Перейдите в каталог /etc/snmp/ и внесите изменения в файл snmp.conf. Он должен выглядеть следующим образом:

syslocation Test.
syscontact INF mail@test.ru
#      sec.name   source          community (password)
com2sec Mybox     localhost          public
com2sec cacti          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

Где вместо поставьте укажите адрес машины с установленным пакетом Cacti.

4. Затем выполняем команду:

# service snmpd start

5. Добавьте сервис snmpd в автоматический запуск на Вашем уровне (в примере 3) запуска системы:

# chkconfig --level 3 smnpd on

Добавление данных в Cacti

Добавление хоста Cisco

1. Перейдите в пункт Devices с левой части экрана.

cacti

2. Нажмите кнопку ADD для добавления нового устройства. В появившемся окне

cacti

заполните поля следующим образом:

  • Description – Описание маршрутизатора/коммутатора, например Cisco XXX.
  • Hostname – IP адрес маршрутизатора/коммутатора.
  • Host Template – В выпадающем меню выберите пункт Cisco Router.
  • Блок параметров SNMP. Введите имя SNMP Community, Username, Password, Version, SNMP Port. После заполнения всех необходимых параметров нажмите Create.

3. Перед вами открылось окно с настройками хоста.

В верхней части экрана показана информация, которую Cacti смогла снять по SNMP. В случае, если Вы не настроили соответствующим образом оборудование или указали неверные параметры SNMP в настройках устройства, то Cacti должна выдать сообщение SNMP Error.

cacti

4. Проверьте на данной странице, что в разделе Associated Graph Templates уже добавлен пункт Cisco - CPU Usage и в разделе Associated Data Queries добавлен пункт SNMP - Interface Statistics. Дело в том, что выбирая готовый шаблон Cisco Router для хоста Вы автоматически добавили необходимые нам для отображения данные.

5. Теперь выберите пункт Create Graphs for this Host сверху страницы.

cacti

6. В появившемся окне выберите пункты меню данные которых Вас интересуют в графическом представлении (загрузка CPU, сетевые интерфейсы).

cacti

После Выбора необходимых пунктов нажмите Create.

cacti

7. В появившемся окне Вам предлагают Выбрать Цвет графика, отображающего загрузку CPU. После выбора необходимого Вам цвета нажмите Create.

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

cacti

8. Теперь Нам осталось создать графики. Дело в том, что в Cacti все графические данные представляются в виде дерева. По умолчанию создано одно дерево с именем Default Tree. Вы можете создавать свои графические деревья, таким образом группируя по каким-нибудь признакам группы хостов. В данном примере мы с Вами добавим вновь созданный хост Cisco в дерево по умолчанию Default Tree. Перейдите в пункт Graph Trees в левой части экрана. В появившемся окне выберите Default Tree.

cacti

9. В меню Tree Items нажмите Add.

cacti

10. В Parent Item оставьте root в Tree Item Type, выберите значение Host. В Host выберите то имя, которое Вы присвоили вашему устройству Cisco. После заполнения всех полей нажмите Create.

cacti

11. Теперь Вам нужно выждать несколько запусков пулера Cacti (он стартует через cron с интервалом в 5 минут), чтобы на графиках появились первые данные.

cacti

Добавление хоста Linux/Unix

1. Перейдите в пункт Devices в левой части экрана.

cacti

2. Нажмите Add для добавления нового хоста. В появившемся окне заполните поля следующим образом:

  • Description – Описание сервера;
  • Hostname – IP адрес, дибо доменное имя хоста.
  • Host Template – оставьте значение данного параметра в None. Также заполните раздел SNMP Options, в соответствии с настройками которые Вы сделали на контролируемом сервере, правильно заполните поля SNMP Community, SNMP Version, SNMP Port и др.

cacti

3. После заполнения всех необходимых параметров нажмите Create. Откроется окно с установками вновь созданного хоста:

cacti

4. Перейдите в нижнюю часть экрана, где находится 2 раздела: Associated Graph Templates и Associated Data Queries:

cacti

5. Вам необходимо добавить в раздел Associated Graph Templates 3 шаблона: ucd/net - CPU Usage, ucd/net - Load Average и ucd/net - Load Average, а в раздел Associated Data QueriesSNMP - Interface Statistics и SNMP - Get Mounted Partitions.

cacti

6. Теперь выберите пункт Create Graphs for this Host сверху страницы и в появившемся окне укажите необходимые для графического отображения данные:

cacti

После нажатие на кнопку Create необходимые данные будут добавлены:

cacti

7. Теперь перейдите в пункт меню Graph Trees, выберите дерево по умолчанию Default Tree, нажмите кнопку ADD.

8. В появившемся меню

cacti

в Parent Item оставьте root, в Tree Item Type выберите значение Host, в Host выберите то имя, которое Вы присвоили вашему хосту. После заполнения всех полей нажмите Create.

Все графики созданы и размещены.

Для просмотра графических данных перейдите в меню Graphs в верхней части экрана и выберите созданный хост.

Добавление дополнительных плагинов для Cacti

Предполагается, что Сacti уже настроен и функционирует в Вашей сети, все приведенные ниже плагины были проверенны на работоспособность под OS CentOS 4.4, также подразумевается, что Cacti работает на отдельной машине в сети и собирает данные со всех хостов по протоколу SNMP.

  • Статистика работы DNS сервера BIND: http://forums.cacti.net/about3018.html;
  • Статистика времени отклика HTTP сервера: http://forums.cacti.net/about11020.html;
  • Статистика количества соединений по протоколам FTP, SMB, HTTP, TELNET, SSH: http://forums.cacti.net/about9097.html.

Статистика работы 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

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

1. Скачайте набор скриптов и графический шаблон по адресу http://uversaconsulting.net/download/bind9-stats-1.0.tar.gz.

2. Распакуйте архив:

# tar -zxvf bind9-stats-1.0.tar.gz

Данные развернутся в каталог bind9-stats в текущем каталоге, в котором в свою очередь находится 2 каталога local и snmp. Для дальнейшей настройки нам понадобится 2 скрипта: bind9-genstats.sh, который находится в каталоге bind9-stats, и bind9-stats-snmpd.pl из каталога snmp.

3. На DNS сервере создайте каталог /var/named/chroot/cacti_script/:

# mkdir /var/named/chroot/cacti_script

4. Перенесите в него 2 файла: bind9-genstats.sh и bind9-stats-snmpd.pl.

5. Внесите следующие изменения в файл bind9-genstats.sh:

STAT_FILE=/var/named/chroot/var/tmp/named.stats

вместо

STAT_FILE=/var/cache/bind/named.stats

6. Внесите следующие изменения в файл bind9-stats-snmpd.pl:

$STAT_FILE = "/var/named/chroot/var/tmp/named.stats"

вместо

$STAT_FILE = "/var/cache/bind/named.stats";

7. Теперь необходимо внести изменение в конфигурацию демона cron. Создайте новый файл задания для cron:

# touch /etc/cron.d/bind

Следующего содержания:

*/5 * * * * root /var/named/chroot/cacti_script/bind9-genstats.sh

Настройка SNMP

1. Внесите изменение в конфигурацию 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

2. Перезапустите snmp командой:

service snmpd restart

Настройка Cacti

1. Перейдите в раздел Import Templates и импортируйте графический шаблон

cacti

2. Перейдите в секцию Devices, выберите хост на котором мы настраивали плагин для DNS сервера.

cacti

3. В секции Associated Data Queries добавьте BIND 9 Statistics (SNMP):

cacti

4. Перейдите в раздел Create Graphs for this Host и поставьте галочку напротив Data Query [BIND 9 Statistics (SNMP)].

cacti

Результат работы плагина

cacti

Статистика времени отклика HTTP сервера.

Настройка плагина

1. Скачайте:

  1. Скрипт http://forums.cacti.net/download.php?id=4092
  2. Графический шаблон времени отклика по TCP http://forums.cacti.net/download.php?id=4094
  3. Графический шаблон времени отклика HTTP http://forums.cacti.net/download.php?id=4095

2. На том сервере, где работает Сacti разверните полученный архив:

# unzip -x scripts.zip

Распакуется 2 файла: http_response_time.pl и tcp_response_time.pl.

3. Данные файлы Вам необходимо положить в каталог /Путь_до_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

1. Перейдите в раздел Import Templates и импортируйте графический шаблон:

cacti

2. Перейдите в секцию Devices и выберите хост, для которого Вы хотите контролировать время отклика HTTP.

cacti

3. В секции Associated Graph Templates добавьте шаблон HTTP Response Time:

cacti

4. Перейдите в раздел Create Graphs for this Host выберите необходимый график:

cacti

Результат работы плагина

cacti

Статистика количества соединений по протоколам FTP, SMB, HTTP, TELNET, SSH

Настройка плагина

1. Скачайте плагин http://forums.cacti.net/download.php?id=2777 и дополнение к нему http://forums.cacti.net/download.php?id=4101.

2. Распакуйте полученные архивы:

# unzip -x active_tcp_conns.zip
# unzip -x active_http_connections.zip

3. Файл tcp_conns.sh скопируйте в каталог /Путь_до_cacti/script

Настройка Cacti

1. Загрузите в 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

2. В настройках хоста, для которого необходим контроль активных соединений, добавьте данные шаблоны и создайте соответствующие графики.

Результат работы плагина

cacti

cacti

Создание собственных плагинов для Cacti

Цель данного раздела научить Вас создавать свои собственные плагины для Cacti. Для примера возьмемся реализовать плагин осуществляющий графическое отображения количества POP3-сессий к почтовому серверу. Т.к. POP3-сервером в большинстве современных дистрибутивов является Dovecot, то и анализировать мы будем его логи.

Схема работы плагина будет выглядеть следующим образом:

  1. При запуске сервера будет стартовать скрипт, который будет запускать парсер логов Dovecot.
  2. Данный парсер собирает данные о количестве подключений к Dovecot по протоколу POP3 и записывает эти данные в файл.
  3. Также необходимо будет внести изменения в файл конфигурации SNMP для того, чтобы Cacti мог получать данные о количестве подключений по стандартному протоколу SNMP.

Ниже приведенный скрипт который парсит лог файл Dovecot, создан на основе Perl скрипта, написанного Jason Warnes для анализа логов Sendmail.

1. Создайте в каталоге /opt файл pop3.pl следующего содержания:

$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=;
       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=){
               @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);
}

2. В каталоге /opt создайте файл snmp-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=)
   {
           @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, создает файл pop3_reset по наличию которого pop3.pl производит обнуление счетчиков.

3. Теперь создадим стартовый скрипт, который будет запускать 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

4. Добавьте cactiwatcher в автоматический запуск:

# chkconfig -add  cactiwatcher
# chkconfig -level 3 cactiwatcher on

5. Осталось внести изменения в файл /etc/snmp/snmpd.conf для того, чтобы Cacti мог получать данные о количестве POP3-сессий через стандартный протокол SNMP.

6. В файл /etc/snmp/snmpd.conf последней строкой добавьте следующую:

pass .1.3.6.1.4.100.1 /opt/snmp-pop3.pl pop3

7. Перезапустите демон snmpd:

# service snmpd restart

8. Дело осталось за малым. Зайдите в интерфейс cacti, перейдите в раздел Data Templates нажмите Add:

cacti

9. Заполните поля:

  • Раздел: 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

10. Нажмите Save, откроется окно с дополнительными опциями Custom Data в котором в поле OID Вам необходимо ввести .1.3.6.1.4.100.1

cacti

11. Нажмите Save и убедитесь, что Ваш шаблон данных Data Templates с именем Get pop3 counter присутствует в общем списке шаблонов.

cacti

12. Перейдите в пункт Graph Templates

cacti

и нажмите Add.

13. Перед Вами откроется окно в котором Вам необходимо создать графический шаблон Graph Templates на основе только что созданного шаблона данных Data Templates.

cacti

14. Заполните поля:

  • Раздел: Template Name: Dovecot counter
  • Раздел: Graph Template Title: Pop3 Session counter

Остальные поля оставьте в значениях По умолчанию.

15. Нажмите Create. Откроется окно с дополнительными настройками создаваемого графического шаблона:

cacti

16. В разделе Graph Template Items нажмите Add. В появившемся окне в меню Data Source выберите уже созданный шаблон данных Data Templates с именем Get pop3 counter. В разделе Color выберите цвет создаваемого графика В разделе Graph Item Type укажите тип графика, AREA – значит закрашенная область. В разделе Consolidation Function выберите тип AVERAGE. В разделе CDEF Function выберите None.

cacti

17. Нажмите Create:

cacti

18. Теперь нам необходимо назначить созданный графический шаблон Graph Template хосту с которого мы будем снимать информацию.

19 .Перейдите в раздел Devices и выберите Ваш почтовый сервер:

cacti

20. Перейдите в раздел Associated Graph Templates и в выпадающем списке Add Graph Template выберите Dovecot counter, т.е. то имя которое мы присвоили нашему графическому шаблону:

cacti

21. После этого наш графический шаблон должен быть в общем списке шаблонов присвоенных данному хосту.

cacti

22. Теперь нажмите ссылку Create Graphs for this Host в верхней части настроек хоста:

cacti

23. В появившемся списке отметьте галочкой пункт Dovecot counter:

cacti

Настройка закончена. Через некоторое время данные начнут отображаться на графике.

cacti

cacti

Статьи по Теме

Категории
Поиск