Cacti - снимаем статистику устройств по SNMP

Версия для печатиОтправить другуPDF version
Cacti
 
Необходимо снимать статистику с разных девайсов и представлять ее в наглядном виде? Тогда однозначно необходимо познакомиться с таким инструментом, как cacti. Позволяет с помощью протокола SNMP снимать статистику с устройств и потом, используя RRD-tool делать наглядные графики, будь то использование дискового пространства на файл-сервере, или загрузка интерфейсов комутатора.

cacti можно найти в портах. Что ж, это радует... Раньше cacti располагался в /usr/ports/net, но потом проект был перемещен в  /usr/ports/net-mgmt.

# cd /usr/ports/net-mgmt/cacti
# make install clean

Для самого cacti опции оставляю по дефолту. Но по ходу установки, подтягивается еще много разных вкусностей. Отдельно отмечу только опции для net-snmp:

Options for net-snmp 5.4.2.1_5

[ ] IPV6 Build with IPv6 support
[X] MFD_REWRITES Build with 64-bit Interface Counters
[X] PERL Install additional perl modules

[X] PERL_EMBEDDED Build embedded perl
[ ] TKMIB Install graphical MIB browser

[X] DUMMY Enable dummy values as placeholders
[ ] DMALLOC Enable dmalloc debug memory allocator

IPv6 мне незачем... А вот поддержка 64-битных счетчиков (опция MFD_REWRITES) пригодится. А то не видать нам на сетевых интерфейсах скорость выше 120 мегабит. 32-битные счетчики переполняются, и не дают отрисовки графиков. Тоесть были проблемы с отображением загрузки каналов на гигабитных интерфейсах. Решалось конфигурированием при сборке net-snmp. Теперь вот разработчики облегчили нам жизнь :)

Установка завершена... Вот сколько всего понадобилось для установки:

===> Cleaning for rrdtool-1.3.8
===> Cleaning for php5-sockets-5.2.10
===> Cleaning for php5-snmp-5.2.10
===> Cleaning for intltool-0.40.6
===> Cleaning for cairo-1.8.8,1
===> Cleaning for pango-1.24.5
===> Cleaning for net-snmp-5.4.2.1_5
===> Cleaning for p5-XML-Parser-2.36_1
===> Cleaning for xcb-util-0.3.5
===> Cleaning for libXrender-0.9.4_1
===> Cleaning for fontconfig-2.6.0,1
===> Cleaning for pixman-0.15.4
===> Cleaning for libXft-2.1.13
===> Cleaning for glib-2.20.4
===> Cleaning for xorg-fonts-truetype-7.4
===> Cleaning for encodings-1.0.2,1
===> Cleaning for gio-fam-backend-2.20.4
===> Cleaning for gperf-3.0.3
===> Cleaning for renderproto-0.9.3
===> Cleaning for font-bh-ttf-1.0.0
===> Cleaning for font-misc-meltho-1.0.0_1
===> Cleaning for font-misc-ethiopic-1.0.0
===> Cleaning for bitstream-vera-1.10_4
===> Cleaning for mkfontscale-1.0.6
===> Cleaning for bdftopcf-1.0.1
===> Cleaning for font-util-1.0.1
===> Cleaning for gamin-0.1.10_3
===> Cleaning for mkfontdir-1.0.4
===> Cleaning for libfontenc-1.0.4
===> Cleaning for libXfont-1.3.4,1
===> Cleaning for fontsproto-2.0.2
===> Cleaning for cacti-0.8.7e

Но не будем отвлекаться. Cacti успешно установился. И как "правильный" порт, вывел список необходимых действий для дальнейшей настроки:

Cacti is now installed. If you intall it for the first time,
you may have to follow this steps to make it work correctly:

1. Create the MySQL database:
# mysqladmin --user=root create cacti
2. Create a mysql user/password for cacti:
(change user and/or password if required)
# echo "GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'cactiuser'; FLUSH PRIVILEGES;" | mysql
3. Import the default cacti database:
# mysql cacti < /usr/local/share/cacti/cacti.sql
4. Edit /usr/local/share/cacti/include/config.php.
5. Add a line to your /etc/crontab file similar to:
*/5 * * * * cacti /usr/local/bin/php /usr/local/share/cacti/poller.php > /dev/null 2>&1
6. Add alias in apache config for the cacti dir:
Alias /cacti "/usr/local/share/cacti/"
7. Be sure apache gives an access to the directory ('Allow from' keywords).
8. Open a cacti login page in your web browser and login with admin/admin.

Обновляем пути, и не спеша, потихоньку делаем, то что "просит" cacti. Начнем с того, что создадим БД и создадим пользователя MySQL с полными правами на созданную БД:

# rehash
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 916
Server version: 5.0.84-log FreeBSD port: mysql-server-5.0.84
mysql> create database `cacti`;
Query OK, 1 row affected (0.00 sec)
mysql> create user 'cacti'@'localhost' identified by 'cacti_db_password';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on `cacti`.* to 'cacti'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye

 Импортируем дамп БД в MySQL:

# mysql -u cacti -p cacti < /usr/local/share/cacti/cacti.sql

 Далее правим конфигурационный файл до такого содержания:

# cat /usr/local/share/cacti/include/config.php

<?php
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "cacti_db_password";
$database_port = "3306";

?>

Добавляем в cron запуск поллера каждые 5 минут и перестартовываем cron:

# echo '# Cacti poller' >> /etc/crontab
# echo '*/5 * * * * cacti /usr/local/bin/php /usr/local/share/cacti/poller.php > /dev/null 2>&1' >> /etc/crontab

 Правим /usr/local/etc/apache22/httpd.conf. В раздел <IfModule alias_module> добавляем такие строки:

Alias /cacti "/usr/local/share/cacti/"
<Directory "/usr/local/share/cacti/">
Options none
AllowOverride Limit
Order Deny,Allow
Allow from all
</Directory>

Далее проверяем, не допустили ли мы ошибок при редактировании конфигурационного файла Apache и если все в норме - перечитываем конфигурацию:

# apachectl configtest
Syntax OK
# apachectl graceful

Далее в адрессной строке браузера набиваем: http://ip_address_servera/cacti/

Если не допустили никаких ошибок, то в окне браузера откроется окошко начальной инсталяции cacti. Соглашаемся со всеми пунктами и по завершению установки попадаем на страницу авторизации. По умолчанию логин admin и пароль admin. После первой успешной авторизации будет предложено сменить пароль на какой-то другой. Установите пароль посложнее ;)

Далее рекомендую добавить себя как пользователя с полными правами, а стандартным пользователем admin не пользоваться. Пользователя guest можно вообще удалить. Для управления пользователями на закладке console в разделе Utilities выбираем пункт User Management. Чтобы добавить пользователя, в правом верхнем углу княпаем на линк Add. Далее - думаю разберетесь. Только не забудьте выставить себе полностью все права и установить галочку напротив пункта "Enabled" ;).

Также советую выставить для себя на закладке Graph Permissions политики по умолчанию. Если их переопределить с Deny на Allow, то это существенно меняет нам жизнь в лучшую сторону.

Перейдя на закладку graphs, то можно увидеть, что уже создано дефолтное дерево устройств и добавлен хост localhost. Однако графики пока не рисуются. Решить эту проблему можно настройкой SNMP на сервере.

Если вы были внимательны, то помните, что во время установки упоминался порт net-snmp. Вот его конфигурированием мы сейчас и займемся.

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

# mkdir /usr/local/etc/snmp
# touch /usr/local/etc/snmp/snmpd.conf

Изменим этот файл до следующего содержания:

# cat /usr/local/etc/snmp/snmpd.conf

syslocation Kiev, UA
syscontact admin 'at' muff.kiev.ua
sysservices 0
rocommunity you_community_name

rocommunity  - это что-то типа логина и пароля в одном флаконе. Необходимо чтобы совпадал на стороне клиента и сервера.

Добавим запуск демона в /etc/rc.conf и запустим net-snmp:

# echo '# SNMP' >> /etc/rc.conf
# echo 'snmpd_enable="YES"' >> /etc/rc.conf
# sh /usr/local/etc/rc.d/snmpd start
Starting snmpd.

Проверим работу:

# snmpwalk -c you_community_name -v 2c localhost

Если в ответ вывалится огромный список MIB-ов, значит все ok.

Теперь можно в cacti для localhost изменить community и добавить необходимые типы графиков. Через некоторое время эти графики можно будет лицезреть воочию на закладке graphs (не забываем, что статистика снимается раз в 5 минут, соответственно графики отрисовываются неспеша).

Советую также обратить внимание на логгирование. Тоесть - настроить ротацию логов. На одном из серверов недавно обнаружил, что лог-файл разросся до 18 гигабайт!

Итак, добавляем в /etc/newsyslog.conf такую строку:

/usr/local/share/cacti/log/cacti.log    644  3     *    $M1D0 JC

Перезапускать syslogd не нужно, поскольку /etc/newsyslog.conf проверяется по cron-у каждый час.

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

Итак, закладка "Console", меню "Management", пункт "Devices".

Выносим добавленный по дефолту "localhost" (проще добавить новый девайс, нежели править старый ;) ). Для этого необходимо поставить чекбокс напротив устройства, выбрать действие "Delete" и нажать кнопку "Go".

Теперь добавим даный сервер... Жмем в верхнем правом углу ссылку "Add" и заполняем поля.

  • Description: вписиваем сюда то, как должно отображаться устройство в дереве устройств. Я, обычно, вписываю DNS-имя сервера, например mail.domain.com.
  • Hostname: вписываем DNS-имя или IP-адрес этого хоста. Лично я предпочитаю IP-адреса. Поскольку мониторить будем локальный сервер, то вписываем IP локалхоста: 127.0.0.1.
  • Host Template: необходимо указать, к какому типу принадлежит даное устройство. В нашем случае - "Generic SNMP-enabled Host".
  • Disable Host: отмечаем, если необходимо отключить все проверки для данного хоста.
  • Downed Device Detection: указываем метод, по которому Cacti будет проверять, доступен ли хост. Я всегда выбираю "SNMP".
  • Ping Timeout Value: таймаут, который использует Cacti при мониторинге устройств. Оставляю по дефолту, поскольку выбран метод проверки SNMP.
  • Ping Retry Count: количество icmp-пакетов, которое отправит Cacti перед тем, как считать, что хост недоступен. Оставляю до дефолту, поскольку выбран метод проверки SNMP.
  • SNMP Version: SNMP-версия, которую использует удаленное устройство. В нашем случае - "Version 2".
  • SNMP Community: указываем наше SNMP-community (можно "подсмотреть в файле /usr/local/etc/snmp/snmpd.conf, параметр rocommunity).
  • SNMP Port: указываем порт, который используется для SNMP. Оставляем по дефолту - 161.
  • SNMP Timeout: время в милисекундах, сколько Cacti ожидает ответа. Оставляю по дефолту - 500.
  • Maximum OID's Per Get Request: максимальное количество OID-ов, которые будут передаваться в одном запросе. Оставляю по дефолту - 10.
  • Notes: здесь можно написать свои примечания.

Итак, поля заполнены необходимыми даными. Жмем кнопку "Create".

Устройство добавлено. Теперь добавим еще несколько "Data Queries", поскольку по умолчанию для "Generic SNMP-enabled Host" создается только "SNMP - Interface Statistics".

Добавим еще такие "Data Queries":

  • SNMP - Get Mounted Partitions - снимать статистику с разделов винчестера
  • SNMP - Get Processor Information - снимать статистику загрузки процессора

После добавления  "Data Queries" жмем кнопку "Save" и приступаем непосредственно с созданию графов. Жмем ссылку "Create Graphs for this Host".

Я отметил следующие графы:

SNMP - Get Mounted Partitions

  • Physical memory
  • Real memory
  • Swap space
  • /
  • /home
  • /tmp
  • /usr
  • /var

SNMP - Get Processor Information

  • 0

SNMP - Interface Statistics

  • ale0
  • em0

"Select a graph type" выставляю в значение "In/Out Bits (64-bits Counters)", поскольку net-snmp собран с поддержкой 64-битных счетчиков. Для некоторых устройств необходимо будет выставлять "In/Out Bits", если они не поддерживают 64-битные счетчики.

 Жмем "Create", и попадаем на страницу выбора цвета, которым будет отрисовыватся график загрузки процессора. Это уже дело вкуса... Определившись с цветом, еще раз жмем  "Create".

Теперь очередь за созданием дерева графов.

Путь следующий: закладка "Console", меню "Management", пункт "Graph Trees". Удаляем дефолтное дерево графов.

Теперь создадим свое новое... Лично я люблю сортировать по типам устройств, поэтому добавляю, например, такие:

  • Servers
  • Routers
  • Switches

Итак, для примера добавим дерево "Servers".

Жмем в верхнем правом углу ссылку "Add". Заполняем поля:

  • Name: Servers
  • Sorting Type: Alphabetic Ordering

Теперь можно добавить наш сервер в это дерево. В строке "Tree Items" жмем ссылку "Add" и заполняем поля:

  • Parent Item: root
  • Tree Item Type: Host
  • Host: в моем случае это mail.domain.com, а в вашем - соответственно ваш сервер.
  • Graph Grouping Style: Тип сортировки - Graph Template
  • Round Robin Archive: Hourly

Жмем кнопку "Create", и идем любоваться графиками на закладке "Graphs".

Для того, чтобы Cacti "понимал" кирилицу, необходимо при установке rrdtool отметить опцию "DEJAVU".

Если не отметили эту опцию, пересоберите rrdtool. Удаляем опции сборки:

# rm -R /var/db/ports/rrdtool

Удаляем и переустанавливаем rrdtool:

# cd /usr/ports/databases/rrdtool
#  make deinstall 
# make install clean 
# rehash

 

 

Примеры получаемых графиков

 

Image

SNMP - Get Mounted Partitions

 

Image

SNMP - Get Mounted Partitions

  

Image

SNMP - Get Processor Information

   

Image

SNMP - Interface Statistics

 

Image

Unix - Load Average

  

Image

ucd/net - CPU Usage
 

Image

SNMP - Interface Statistics
 

 Дополнительные типы графов:

 

Ваша оценка: Нет Средняя: 4.4 (8 голосов)

 Спасибо за сайт! Начал

 Спасибо за сайт!

Начал настраивать по Вашей статье cacti. Дошел до вот этого момента: http;//ip_address_servera/cacti/,  а оно мне в ответ: FATAL: Cannot connect to MySQL server on 'localhost'. Please make sure you have specified a valid MySQL database name in 'include/config.php'. Базу и пользователя создавал разными способами: руками, phpmyadmin. Но так и не поборол.

Система у меня: FreeBsd 8.1

Где рыть?

Проблема в коннекте к БД MySQL

Проблема в коннекте к БД MySQL.

Попробуйте подключиться из консоли к MySQL, используя данные коннекта, которые внесены в /usr/local/share/cacti/include/config.php. Кстати, можете вывести содержание /usr/local/share/cacti/include/config.php?

Пример коннекта к БД MySQL, за условия, что пароль - MySQLpw, а пользователь - cacti:

# mysql -u cacti - pMySQLpw

Если к базе подключиться не удается - разбирайтесь с правами доступа в MySQL.

Кстати, дамп, надеюсь, не забыли залить в базу?

Добрый день. Подскажите как

Добрый день. Подскажите как можно с поможью cacti считать определенный текстовый параметр. Есть oid .1.3.6.1.2.1.10.94.1.1.1.1.4.1 - 48. Результат запроса:

.....

STRING: "Multimode 928/4896"
SNMPv2-SMI::transmission.94.1.1.1.1.4.2 = STRING: "N3008/24000AnnexM"
SNMPv2-SMI::transmission.94.1.1.1.1.4.3 = STRING: "Multimode 608/608"
SNMPv2-SMI::transmission.94.1.1.1.1.4.4 = STRING: "N896/4896Gdmt"
SNMPv2-SMI::transmission.94.1.1.1.1.4.5 = STRING: "N3008/24000AnnexM"
.......

Подскажите, как отобразить эти данные для определенного выбранного порта на графике или рядом с графиком ?

Делал через xml файл не получилось отображать данные на графике

<interface>
<name>Get SNMP Interfaces</name>
<description>Queries a host for a list of monitorable interfaces</description>
<oid_index>.1.3.6.1.2.1.10.94.1.1.1.1.1</oid_index>
<index_order>ifIndex:ifProfile</index_order>
<index_order_type>numeric</index_order_type>
<index_title_format>|chosen_order_field|</index_title_format>

<fields>

    <ifIndex>
        <name>Index</name>
        <method>walk</method>
        <source>value</source>
        <direction>input</direction>
        <oid>.1.3.6.1.2.1.2.2.1.1</oid>
    </ifIndex>

    <ifProfile>
        <name>Profile</name>
        <method>walk</method>
        <source>value</source>
        <direction>output</direction>
        <oid>.1.3.6.1.2.1.10.94.1.1.1.1.4</oid>
    </ifProfile>
</fields>
</interface>
 

Чесно? Никогда такого не

Чесно?

Никогда такого не делал... К сожалению, наверное не смогу сейчас что-то посоветовать. Нужно садиться и методом проб и ошибок искать решение.

P.S. Кажется пора запускать форум :)

Автору спс за статью.

Автору спс за статью. Столкнулся с таки багом - Mysql 5.5.8 при выполнении команды "mysql -u cacti -p cacti < /usr/local/share/cacti/cacti.sql" ругалась на ERROR 1064 (42000) at line 5: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE=MyISAM' at line 6. Решилось все заменой строк "TYPE=MyISAM" на "ENGINE=MyISAM" . Вот так

Спасибо, что поделились

Спасибо, что поделились опытом.

Статья писалась на MySQL-5.1.29.

В чем может быть проблема,

В чем может быть проблема, подскажите... Все работает, графики рисуются, но процессы растут, было 30-50, после 2-х часовой работы cacti их становится 300. В чем может быть ошибка?

http://img534.imageshack.us/i/cactir.jpg/

Есть догадки о том, что PHP

Есть догадки о том, что PHP работает некорректно.

Дальнейшее обсуждение - на форуме.

Вот спасибо за статью - даже

Вот спасибо за статью - даже спустя год по ней все нараивается без проблем :-)

Только вот - графики трафика показывают только bits/sec, а можно добавить packets/sec? Поковырялся - увы, не нашел... А ради этого все и затевалось на машинке...

Возможность отрисовки

Возможность отрисовки количества пакетов за секунду, проходящих через интерфейс тоже есть в стандартной поставке. При создании графика вибырайте graph type - In/Out Unicast Packets. Это для интерфейсов маршрутизатора - чтобы видеть, какое количество пакетов он маршрутизирует. А вот для коммутаторов советую еще добавлять graph type: In/Out Non Unicast Packets. Это для того, чтобы отслеживать количество броадкастов на втором уровне модели OSI. Помогает выявлять петли (если кто-то умудрится их создать) и "глюкнувшее" оборудование, либо же активность вирусов в каком-то сегменте сети.

Re: Cacti - снимаем статистику устройств по SNMP

Вот такая ошибка выскакивает:

-------

===> Building for php5-snmp-5.4.9_1
/bin/sh /usr/ports/net-mgmt/php5-snmp/work/php-5.4.9/ext/snmp/libtool --mode=compile cc -I. -I/usr/ports/net-mgmt/php5-snmp/work/php-5.4.9/ext/snmp -DPHP_ATOM_INC -I/usr/ports/net-mgmt/php5-snmp/work/php-5.4.9/ext/snmp/include -I/usr/ports/net-mgmt/php5-snmp/work/php-5.4.9/ext/snmp/main -I/usr/ports/net-mgmt/php5-snmp/work/php-5.4.9/ext/snmp -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/usr/local/include -DHAVE_CONFIG_H -O2 -pipe -fno-strict-aliasing -c /usr/ports/net-mgmt/php5-snmp/work/php-5.4.9/ext/snmp/snmp.c -o snmp.lo
mkdir .libs
cc -I. -I/usr/ports/net-mgmt/php5-snmp/work/php-5.4.9/ext/snmp -DPHP_ATOM_INC -I/usr/ports/net-mgmt/php5-snmp/work/php-5.4.9/ext/snmp/include -I/usr/ports/net-mgmt/php5-snmp/work/php-5.4.9/ext/snmp/main -I/usr/ports/net-mgmt/php5-snmp/work/php-5.4.9/ext/snmp -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/usr/local/include -DHAVE_CONFIG_H -O2 -pipe -fno-strict-aliasing -c /usr/ports/net-mgmt/php5-snmp/work/php-5.4.9/ext/snmp/snmp.c -fPIC -DPIC -o .libs/snmp.o
/usr/ports/net-mgmt/php5-snmp/work/php-5.4.9/ext/snmp/snmp.c:1945: error: expected ';', ',' or ')' before '*' token
/usr/ports/net-mgmt/php5-snmp/work/php-5.4.9/ext/snmp/snmp.c:1987: error: expected ';', ',' or ')' before '*' token
/usr/ports/net-mgmt/php5-snmp/work/php-5.4.9/ext/snmp/snmp.c:2025: error: expected ';', ',' or ')' before '*' token
/usr/ports/net-mgmt/php5-snmp/work/php-5.4.9/ext/snmp/snmp.c: In function 'zm_startup_snmp':
/usr/ports/net-mgmt/php5-snmp/work/php-5.4.9/ext/snmp/snmp.c:2367: error: 'php_snmp_read_property' undeclared (first use in this function)
/usr/ports/net-mgmt/php5-snmp/work/php-5.4.9/ext/snmp/snmp.c:2367: error: (Each undeclared identifier is reported only once
/usr/ports/net-mgmt/php5-snmp/work/php-5.4.9/ext/snmp/snmp.c:2367: error: for each function it appears in.)
/usr/ports/net-mgmt/php5-snmp/work/php-5.4.9/ext/snmp/snmp.c:2368: error: 'php_snmp_write_property' undeclared (first use in this function)
/usr/ports/net-mgmt/php5-snmp/work/php-5.4.9/ext/snmp/snmp.c:2369: error: 'php_snmp_has_property' undeclared (first use in this function)
*** Error code 1
1 error
*** Error code 1

Stop in /usr/ports/net-mgmt/php5-snmp.
*** Error code 1

Stop in /usr/ports/net-mgmt/cacti.
 

------ 

порты обновил

PHP 5.3.10 with Suhosin-Patch (cli) (built: Mar 15 2012 16:06:40)
 

 

может, посоветуете что-нибудь

Re: Cacti - снимаем статистику устройств по SNMP

Установлен PHP v.5.3.10, а модуль собирается для PHP v.5.4.9.

Переустанови PHP и модули.

Re: Cacti - снимаем статистику устройств по SNMP

Установил и настроил по вашей статье, но не рисуется графики. Полез в настройки, покапался и выдает ошибку: ERROR: Installed RRDTool version does not match configured version. В логах apache вот такая ошибка:
PHP Notice:  Undefined index:  Unknown in /usr/local/share/cacti/utilities.php on line 310, referer: http://8.8.8.8/cacti/utilities.php
OS: FreeBSD 8.2-RELEASE
cacti-0.8.8a1
rrdtool-1.4.7_2
 

Re: Cacti - снимаем статистику устройств по SNMP

Ожидаю вопрос  на форуме.

Re: Cacti - снимаем статистику устройств по SNMP

Спасибо за статью - помогло. Сам столкнулся с проблемой размещения на графиках подписей с описанием порта или port alias. Вот нашел интересную заметку по port description http://dutyadmin.ru/content/sovety-po-cacti c описанием как это делают

Re: Cacti - снимаем статистику устройств по SNMP

 У меня веб-сервер nginx.

Alias /cacti "/usr/local/share/cacti/"
<Directory "/usr/local/share/cacti/">
Options none
AllowOverride Limit
Order Deny,Allow
Allow from all
</Directory>

Как такие настройки задать для сервера nginx?

Re: Cacti - снимаем статистику устройств по SNMP

Основное задание этих директив - разрешить доступ в каталог. Необходимо, чтобы в конфигурации nginx был включен модуль ngx_http_access_module.

Пример 1:

location /usr/local/share/cacti/ {
	allow 192.168.1.1;
	allow 192.168.0.0/24;
	deny all;
}

 Пример 2:

location /usr/local/share/cacti/ {
	deny 192.168.1.0/24;
	allow all;
}

Правила проверяются в порядке их записи до первого соответствия. В примере 1 доступ разрешен только для IP 192.168.1.1 и сети 192.168.0.0/24. В примере 2 доступ разрешен всем, кроме сети 192.168.0.0/24.

Re: Cacti - снимаем статистику устройств по SNMP

 Извеняюсь за совсем тупой вопрос.

А как включить модульngx_http_access_module ?

Или как прповерить, включен он или нет?

Re: Cacti - снимаем статистику устройств по SNMP

Чтобы просмотреть, с какими модулями собран nginx, воспользуйтесь коммандой nginx -V.

Re: Cacti - снимаем статистику устройств по SNMP

 Выолнил команду nginx -V

Но этого модуля нет :(

 

 

nginx version: nginx/1.4.2
TLS SNI support enabled
configure arguments: --prefix=/usr/local/etc/nginx --with-cc-opt='-I /usr/local/include' --with-ld-opt='-L /usr/local/lib' --conf-path=/usr/local/etc/nginx/nginx.conf --sbin-path=/usr/local/sbin/nginx --pid-path=/var/run/nginx.pid --error-log-path=/var/log/nginx-error.log --user=www --group=www --with-ipv6 --http-client-body-temp-path=/var/tmp/nginx/client_body_temp --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp --http-proxy-temp-path=/var/tmp/nginx/proxy_temp --http-scgi-temp-path=/var/tmp/nginx/scgi_temp --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi_temp --http-log-path=/var/log/nginx-access.log --with-http_stub_status_module --with-pcre --with-http_ssl_module

Re: Cacti - снимаем статистику устройств по SNMP

 Нашел на одном форуме такую мысль: что модуль ngx_http_access_module командой nginx -V не отображается.

 

 

Re: Cacti - снимаем статистику устройств по SNMP

Попробуйте просто указать алиас:

location /cacti {
alias /usr/local/share/cacti/;
}

 

Re: Cacti - снимаем статистику устройств по SNMP

 

Сервер на запрос http://сервер/cacti отдает ответ 403 Forbidden

 

Иначе (если не указывать алиас):

Сервер по запросу http://сервер/cacti отдает два ответа

Код ответа 302                 Redirect to: /cactai/install

Код ответа 500

 

Происходит редирект с папки /cacti в папку /cacti/install а дальше ошибка 500 :(

 

Re: Cacti - снимаем статистику устройств по SNMP

 При выполнении этой команды snmpwalk -c you_community_name -v 2c localhost вываливается список MIB

Казалось бы snmp работает.

Но когда создаю новое устройство. Следуя инструкции выше (Теперь добавим даный сервер... Жмем в верхнем правом углу ссылку "Add" и заполняем поля.)

Устройство создается и даже пишет Save Successful.

И пишет SNMP error

Почему происходит ошибка не пойму. Вы сталкивались с таким?

Re: Cacti - снимаем статистику устройств по SNMP

Должно работать. Попроверяйте то, как заполнены поля "Host template", "SNMP community", etc. На всякий случай добавляю скриншот с работающего варианта:

Изображение

Re: Cacti - снимаем статистику устройств по SNMP

 Спасибо. Получилось.

Re: Cacti - снимаем статистику устройств по SNMP

Один вопрос.

 Добавил устройство.

Затем добавляю data queries: 'SNMP - Get Mounted Partitions' в поле Re-Index Method выбираю  None

Все хорошо data queries добавлен.

Жму ссылку "Create Graphs for this Host".

И он пишет следующее:

 

Data Query [SNMP - Get Mounted Partitions]
This data query returned 0 rows, perhaps there was a problem executing this data query. You can run this data query in debug mode to get more information.

Насколько я понимаю то дата квэри возвращает 0 строк. И необходимо его выполнить в режиме отладки.

Хорошо. Выполняю в режиме отладки. И получаю вот такую абра-кадабру. По научному отчет.

 

Data Query Debug Information
+ Running data query [8].
+ Found type = '6' [Script Query - Script Server].
+ Found data query XML file at '/usr/local/share/cacti/resource/script_server/host_disk.xml'
+ XML file parsed ok.
+ Executing script for num of indexes '"/usr/local/bin/php" -q /usr/local/share/cacti/scripts/ss_host_disk.php 127.0.0.1 5 2:161:500:1:10:community_tfox:::::: num_indexes'
+ Executing script for list of indexes '"/usr/local/bin/php" -q /usr/local/share/cacti/scripts/ss_host_disk.php 127.0.0.1 5 2:161:500:1:10:community_tfox:::::: index' Index Count: 0
+ Executing script query '"/usr/local/bin/php" -q /usr/local/share/cacti/scripts/ss_host_disk.php 127.0.0.1 5 2:161:500:1:10:community_tfox:::::: query index'
+ Executing script query '"/usr/local/bin/php" -q /usr/local/share/cacti/scripts/ss_host_disk.php 127.0.0.1 5 2:161:500:1:10:community_tfox:::::: query description'
+ Executing script query '"/usr/local/bin/php" -q /usr/local/share/cacti/scripts/ss_host_disk.php 127.0.0.1 5 2:161:500:1:10:community_tfox:::::: query sau'

Что говрится в этом дэбаг информэйшен не пойму. Что делать? Подскажите пожалуйста. Этот cacti уже стока крови попил.

 

Re: Cacti - снимаем статистику устройств по SNMP

Re-Index Method выставь в значение Uptime Goes Backwards.

Re: Cacti - снимаем статистику устройств по SNMP

 Выставил. То же самое. Выдает такое же сообщение.

Re: Cacti - снимаем статистику устройств по SNMP

Затрудняюсь сказать. У меня, сколько ни ставил Cacti, с этим темплейтом никогда проблем не возникало.

Verbose у меня выводит такую инфу:

Data Query Debug Information

+ Running data query [8].
+ Found type = '6' [Script Query - Script Server].
+ Found data query XML file at '/usr/local/share/cacti/resource/script_server/host_disk.xml'
+ XML file parsed ok.
+ Executing script for num of indexes '"/usr/local/bin/php" -q /usr/local/share/cacti/scripts/ss_host_disk.php server.local 5 2:161:500:1:10:community_here:::::: num_indexes'
+ Found number of indexes: 14
+ Executing script for list of indexes '"/usr/local/bin/php" -q /usr/local/share/cacti/scripts/ss_host_disk.php server.local 5 2:161:500:1:10:community_here:::::: index' Index Count: 14
+ Found index: 1
+ Found index: 2
+ Found index: 3
+ Found index: 6
+ Found index: 7
+ Found index: 8
+ Found index: 9
+ Found index: 10
+ Found index: 31
+ Found index: 32
+ Found index: 33
+ Found index: 34
+ Found index: 35
+ Found index: 36
+ Executing script query '"/usr/local/bin/php" -q /usr/local/share/cacti/scripts/ss_host_disk.php server.local 5 2:161:500:1:10:community_here:::::: query index'
+ Found item [hrStorageIndex='1'] index: 1
+ Found item [hrStorageIndex='2'] index: 2
+ Found item [hrStorageIndex='3'] index: 3
+ Found item [hrStorageIndex='6'] index: 6
+ Found item [hrStorageIndex='7'] index: 7
+ Found item [hrStorageIndex='8'] index: 8
+ Found item [hrStorageIndex='9'] index: 9
+ Found item [hrStorageIndex='10'] index: 10
+ Found item [hrStorageIndex='31'] index: 31
+ Found item [hrStorageIndex='32'] index: 32
+ Found item [hrStorageIndex='33'] index: 33
+ Found item [hrStorageIndex='34'] index: 34
+ Found item [hrStorageIndex='35'] index: 35
+ Found item [hrStorageIndex='36'] index: 36
+ Executing script query '"/usr/local/bin/php" -q /usr/local/share/cacti/scripts/ss_host_disk.php server.local 5 2:161:500:1:10:community_here:::::: query description'
+ Found item [hrStorageDescr='Physical memory'] index: 1
+ Found item [hrStorageDescr='Real memory'] index: 2
+ Found item [hrStorageDescr='Virtual memory'] index: 3
+ Found item [hrStorageDescr='Memory buffers'] index: 6
+ Found item [hrStorageDescr='Cached memory'] index: 7
+ Found item [hrStorageDescr='Shared virtual memory'] index: 8
+ Found item [hrStorageDescr='Shared real memory'] index: 9
+ Found item [hrStorageDescr='Swap space'] index: 10
+ Found item [hrStorageDescr='/'] index: 31
+ Found item [hrStorageDescr='/dev'] index: 32
+ Found item [hrStorageDescr='/usr'] index: 33
+ Found item [hrStorageDescr='/home'] index: 34
+ Found item [hrStorageDescr='/tmp'] index: 35
+ Found item [hrStorageDescr='/var'] index: 36
+ Executing script query '"/usr/local/bin/php" -q /usr/local/share/cacti/scripts/ss_host_disk.php server.local 5 2:161:500:1:10:community_here:::::: query sau'
+ Found item [hrStorageAllocationUnits='4096 Bytes'] index: 1
+ Found item [hrStorageAllocationUnits='4096 Bytes'] index: 2
+ Found item [hrStorageAllocationUnits='4096 Bytes'] index: 3
+ Found item [hrStorageAllocationUnits='1024 Bytes'] index: 6
+ Found item [hrStorageAllocationUnits='4096 Bytes'] index: 7
+ Found item [hrStorageAllocationUnits='4096 Bytes'] index: 8
+ Found item [hrStorageAllocationUnits='4096 Bytes'] index: 9
+ Found item [hrStorageAllocationUnits='4096 Bytes'] index: 10
+ Found item [hrStorageAllocationUnits='4096 Bytes'] index: 31
+ Found item [hrStorageAllocationUnits='512 Bytes'] index: 32
+ Found item [hrStorageAllocationUnits='4096 Bytes'] index: 33
+ Found item [hrStorageAllocationUnits='4096 Bytes'] index: 34
+ Found item [hrStorageAllocationUnits='4096 Bytes'] index: 35
+ Found item [hrStorageAllocationUnits='4096 Bytes'] index: 36

 

Re: Cacti - снимаем статистику устройств по SNMP

 Вот эти строчки у нас совпадают.

+ Running data query [8].
+ Found type = '6' [Script Query - Script Server].
+ Found data query XML file at '/usr/local/share/cacti/resource/script_server/host_disk.xml'
+ XML file parsed ok.
+ Executing script for num of indexes '"/usr/local/bin/php" -q /usr/local/share/cacti/scripts/ss_host_disk.php server.local 5 2:161:500:1:10:community_here:::::: num_indexes'

А дальше идет строка которой у меня нет.

+ Found number of indexes: 14

Он не нашел какойто индекс 14.

Да уж. Покапаюсь еще.

Re: Cacti - снимаем статистику устройств по SNMP

 Файл /usr/local/share/cacti/scripts/ss_host_disk.php существует. На что он может ругаться?

И этот файл /usr/local/share/cacti/resource/script_server/host_disk.xml существует .

Re: Cacti - снимаем статистику устройств по SNMP

Смотрите, может кактус в логи что-то пишет по этому поводу?

# tail -f /usr/local/share/cacti/log/cacti.log

 

Re: Cacti - снимаем статистику устройств по SNMP

Он пишет вот это. Но мне это не понятно. Какойто поллер и систем статс.

09/11/2013 12:39:59 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
09/11/2013 12:39:59 PM - SYSTEM STATS: Time:298.2829 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:0 RRDsProcessed:0
09/11/2013 12:44:59 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
09/11/2013 12:44:59 PM - SYSTEM STATS: Time:298.2759 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:0 RRDsProcessed:0
09/11/2013 12:49:59 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
09/11/2013 12:49:59 PM - SYSTEM STATS: Time:298.4549 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:0 RRDsProcessed:0
09/11/2013 12:54:59 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
09/11/2013 12:54:59 PM - SYSTEM STATS: Time:298.3594 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:0 RRDsProcessed:0
09/11/2013 12:59:59 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
09/11/2013 12:59:59 PM - SYSTEM STATS: Time:298.4701 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:0 RRDsProcessed:0
09/11/2013 01:04:59 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
09/11/2013 01:04:59 PM - SYSTEM STATS: Time:298.3319 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:0 RRDsProcessed:0
09/11/2013 01:09:59 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
09/11/2013 01:09:59 PM - SYSTEM STATS: Time:298.2560 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:0 RRDsProcessed:0
09/11/2013 01:14:59 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
09/11/2013 01:14:59 PM - SYSTEM STATS: Time:298.3128 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:0 RRDsProcessed:0
09/11/2013 01:19:59 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
09/11/2013 01:19:59 PM - SYSTEM STATS: Time:298.3405 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:0 RRDsProcessed:0
09/11/2013 01:24:59 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
09/11/2013 01:24:59 PM - SYSTEM STATS: Time:298.4638 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:0 RRDsProcessed:0
09/11/2013 01:29:59 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
09/11/2013 01:29:59 PM - SYSTEM STATS: Time:298.2978 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:0 RRDsProcessed:0
09/11/2013 01:34:59 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
09/11/2013 01:34:59 PM - SYSTEM STATS: Time:298.2949 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:0 RRDsProcessed:0
09/11/2013 01:39:59 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
09/11/2013 01:39:59 PM - SYSTEM STATS: Time:298.3056 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:0 RRDsProcessed:0
09/11/2013 01:44:59 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
09/11/2013 01:44:59 PM - SYSTEM STATS: Time:298.3166 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:0 RRDsProcessed:0
09/11/2013 01:49:59 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
09/11/2013 01:49:59 PM - SYSTEM STATS: Time:298.4791 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:0 RRDsProcessed:0
09/11/2013 01:54:59 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
09/11/2013 01:54:59 PM - SYSTEM STATS: Time:298.3522 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:0 RRDsProcessed:0
09/11/2013 01:59:59 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
09/11/2013 01:59:59 PM - SYSTEM STATS: Time:298.2321 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:0 RRDsProcessed:0
09/11/2013 02:04:59 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
09/11/2013 02:04:59 PM - SYSTEM STATS: Time:298.4092 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:0 RRDsProcessed:0
09/11/2013 02:09:59 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
09/11/2013 02:09:59 PM - SYSTEM STATS: Time:298.4511 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:0 RRDsProcessed:0
09/11/2013 02:14:59 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
09/11/2013 02:14:59 PM - SYSTEM STATS: Time:298.4638 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:0 RRDsProcessed:0
09/11/2013 02:19:59 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
09/11/2013 02:19:59 PM - SYSTEM STATS: Time:298.4899 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:0 RRDsProcessed:0
09/11/2013 02:24:59 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
09/11/2013 02:24:59 PM - SYSTEM STATS: Time:298.4987 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:0 RRDsProcessed:0
09/11/2013 02:29:59 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
09/11/2013 02:29:59 PM - SYSTEM STATS: Time:298.3623 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:0 RRDsProcessed:0
09/11/2013 02:34:59 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
09/11/2013 02:34:59 PM - SYSTEM STATS: Time:298.4789 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:0 RRDsProcessed:0
09/11/2013 02:39:59 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
09/11/2013 02:39:59 PM - SYSTEM STATS: Time:298.2520 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:0 RRDsProcessed:0

Re: Cacti - снимаем статистику устройств по SNMP

 Извините, что засрал тут длинными логами.

Re: Cacti - снимаем статистику устройств по SNMP

Выполнение скрипта обрывается по тайм-ауту. А почему - разбирайтесь.

Re: Cacti - снимаем статистику устройств по SNMP

 А какой поллер вы используете? Я имею ввиду, что у вас установлено в комбобоксе cmd.php или spine?

Адрес комбобокса: Console->Setting->Poller->Poller Type

Re: Cacti - снимаем статистику устройств по SNMP

cmd.php

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

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Вставай, Україно!

Литература

Работоспособность Админа зависит от наличия "Источника бесперебойного питания"!