1.Установка необходимых пакетов
1 |
# yum install rrdtool cacti php-mysql php-pear php-common php-gd php-devel php php-mbstring php-cli php-snmp |
2. Установка и настройка SNMP
1 |
# yum install net-snmp-utils net-snmp net-snmp-libs |
1 |
# cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf~ |
1 |
# cat /dev/null > /etc/snmp/snmpd.conf |
1 |
# nano /etc/snmp/snmpd.conf |
# разрешаем снимать статистику локально(с самого себя)
1 2 3 |
rocommunity mysecret localhost syslocation "Ukraine,Kharkov" syscontact Root root@mydomain.com |
1 |
# systemctl start snmpd |
1 |
# systemctl status snmpd |
1 |
# ps aux | grep [Ss]nmpd |
1 |
root 2124 0.2 1.0 222928 10688 ? Ss 12:09 0:00 /usr/sbin/snmpd -LS0-6d –f |
1 |
# netstat -nlpu | grep 161 |
1 |
udp 0 0 0.0.0.0:161 0.0.0.0:* 2124/snmpd |
Проверка корректности работы SNMP
1 |
# snmpwalk -v 2c -c mysecret localhost |
3.Настройка Cacti
У cacti есть скрипт для создания базы данных. Находим файл с именем cacti.sql
1 |
# rpm -ql cacti | grep cacti.sql |
1 |
/usr/share/doc/cacti-0.8.8b/cacti.sql |
Создаем базу cacti и пользователя cactiuser с паролем cactipassword для доступа к этой базе
1 |
# mysql -u root –p |
1 |
MariaDB >create database cacti; |
1 |
MariaDB >grant all privileges on cacti.* TO cactiuser@localhost IDENTIFIED BY 'cactipassword’; |
1 |
MariaDB >flush privileges; |
1 |
MariaDB>exit |
Создаем таблицы в базе cacti
1 |
# mysql -u cactiuser -p cactipassword < /usr/share/doc/cacti-0.8.8b/cacti.sql |
Файл подключения к базе данных приводим к виду
1 |
# nano /etc/cacti/db.php |
1 2 3 4 5 6 7 |
$database_type = "mysql"; $database_default = "cacti"; $database_hostname = "localhost"; $database_username = "cactiuser"; $database_password = "cactipassword"; $database_port = "3306"; $database_ssl = false; |
4.Настройка WEB-сервера
Если используется Apache
Разрешаем доступ с локальной сети(192.168.1.0.24 либо отовсюду All)
1 |
# cat /etc/httpd/conf.d/cacti.conf |
1 2 3 4 |
……………….. Allow from localhost Allow from 192.168.1.0/24 ………… |
1 |
# /etc/init.d/httpd restart |
Проверяем/выставляем возможность записи для cacti-пользователя на каталог /var/lib/cacti/rra
1 |
# ls -al /var/lib/cacti | grep rra |
1 |
drwxr-xr-x 2 cacti root 4096 Dec 27 17:45 rra |
и на каталог с log-файлами
1 |
# ls -al /var/log/ | grep cacti |
1 |
drwxrwxr-x 2 cacti apache 4096 Dec 27 12:12 cacti |
Доступ WEB-сервера к файлу подключения к базе данных
1 |
# ls -al /etc/cacti/ | grep db.php |
1 |
-rw-r----- 1 cacti apache 2133 Dec 27 17:00 db.php |
Если используется Nginx
В вирт.хост по умолчанию добавляем секцию для cacti
1 |
# nano /etc/nginx/conf.d/default.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
server { listen 80 default_server; ……… location /cacti { allow 127.0.0.1; allow 192.168.1.0/24; deny all; #auth_basic "Restricted Area"; #auth_basic_user_file /etc/nginx/.htpasswd; #satisfy any; alias /usr/share/cacti; index index.php; location ~ \.php$ { include fastcgi_params; fastcgi_index index.php; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_param SCRIPT_FILENAME $request_filename; } } ……….. } |
PHP-FPM
1 |
# cat /etc/php-fpm.d/www.conf | egrep -v '(#|;|^$)' |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
[www] listen = /var/run/php5-fpm.sock listen.allowed_clients = 127.0.0.1 listen.owner = nginx listen.group = nginx listen.mode = 0660 user = nginx group = nginx pm = dynamic pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35 pm.status_path = /status ping.path = /ping ping.response = pong request_terminate_timeout = 300 slowlog = /var/log/php-fpm/www-slow.log catch_workers_output = yes php_admin_value[error_log] = /var/log/php-fpm/www-error.log php_admin_flag[log_errors] = on php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/session |
Проверка/настройка необходимых прав
1 |
# ls -al /var/lib/cacti/ | grep rra |
1 |
drwxr-xr-x 2 cacti root 4096 Dec 27 17:45 rra |
1 |
# chgrp -R nginx /var/log/cacti/ |
1 |
# ls -al /var/log/ | grep cacti |
1 |
drwxrwxr-x 2 cacti nginx 4096 Dec 27 12:12 cacti |
1 |
# chgrp nginx /etc/cacti/db.php |
1 |
# ls -al /etc/cacti/ | grep db |
1 |
-rw-r----- 1 cacti nginx 2133 Dec 27 17:00 db.php |
1 |
# chgrp -R nginx /var/lib/php/session |
1 |
# ls -al /var/lib/php/ | grep session |
1 |
drwxrwx--- 2 root nginx 4096 Dec 27 17:29 session |
5.Установку продолжаем через WEB-интерфейс
1 |
http://<default_sitename>/cacti/ или http://<IP-address-servers>/cacti/ |
1 2 |
Login: admin Password: admin |
Изменяем пароль для admin-пользователя
6.Включаем сбор статистики по крону
1 |
# nano /etc/cron.d/cacti |
1 |
*/5 * * * * cacti /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1 |
Логи Cacti смотрим в
1 |
# tail -f /var/log/cacti/cacti.log |
Либо через WEB-интерфейс
1 |
System Utilities->View Cacti Log File |
7.Замена Poller в Cacti со стандартного cmd.php-скрипта на spine
Установка необходимых зависимостей для сборки Cacti Spine из исходников
1 |
# yum install gcc mysql-devel net-snmp-devel autoconf automake libtool dos2unix |
Сборка и установка Cacti Spine
1 |
# wget http://www.cacti.net/downloads/spine/cacti-spine-0.8.8f.tar.gz |
1 |
# tar xvzf cacti-spine-*.tar.gz |
1 |
# cd cacti-spine-0.* |
1 |
# ./configure |
1 |
# make |
1 |
# make install |
Spine будет установлен в /usr/local/spine/
1 |
# ls -al /usr/local/spine |
1 2 |
drwxr-xr-x 2 root root 4096 Dec 27 19:01 bin drwxr-xr-x 2 root root 4096 Dec 27 19:01 etc |
Настраиваем конфигурационный файл Spine
1 |
# cp /usr/local/spine/etc/spine.conf.dist /usr/local/spine/etc/spine.conf |
1 |
# nano /usr/local/spine/etc/spine.conf |
1 2 3 4 5 |
DB_Host localhost DB_Database cacti DB_User cactiuser DB_Pass cactipassword DB_Port 3306 |
Настраиваем Cacti на использование spine вместо стандартного cmd.php скрипта
Логинимся под admin пользователем в Cacti
1 |
Settings->Paths->Spine Poller File Path->/usr/local/spine/bin/spine->Save |
1 |
Settings->Poller Type->Spine->Save |
8.Перевод Cacti с 5-минутного на 1-минутный интервал
Cron изменяем на
1 |
# nano /etc/cron.d/cacti |
1 |
* * * * * /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1 |
В Web-интерфейсе
1 |
Settings->Poller->Poller Interval-> Every Minute |
1 |
Settings->Poller-> Cron -> Every Minute |
Делаем изменение в таблицах cacti-базы
1 |
# mysql -u root –p |
1 |
MariaDB> use cacti; |
1 |
MariaDB [cacti]> update data_template_data set rrd_step='60'; |
1 |
MariaDB [cacti]> update data_template_rrd set rrd_heartbeat='120'; |
Удаляем старые графики
1 |
# find /usr/share/cacti/rra/ -type f -name '*.rrd' -exec rm {} \; |
Мое примечание
Если графики не появились, тогда
в Date template для всех template нужно выбрать HOURLY(1минута) либо заново импортировать шаблон из файла при этом выбирая HOURLY(1минута),затем удалить все графики и создать заново(если не поможет, тогда перестроить poller cache)
9.Настройка клиента – сервера, с которого будем снимать статистику
Centos
1 |
# yum install net-snmp-utils net-snmp net-snmp-libs |
Ubuntu
1 |
# apt-get install snmpd |
1 |
# cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf~ |
1 |
# cat /dev/null > /etc/snmp/snmpd.conf |
Разрешаем снимать статистику локально и с указанного Cacti сервера
1 |
# nano /etc/snmp/snmpd.conf |
1 2 3 4 5 |
rocommunity mysecret <IP-adress-cacti-server> rocommunity mysecret localhost syslocation "Ukraine,Kharkov" syscontact Root root@mydomain.com |
10.Настройка iptables на клиенте – разрешаем только подключения с Cacti-сервера
1 2 3 4 5 |
# iptables -N snmp # iptables -A INPUT -p udp --dport 161 -j snmp # iptables -A snmp -s <IP-adress-cacti-server> -j ACCEPT # iptables -A snmp -j LOG --log-prefix "input snmp: " # iptables -A snmp -j DROP |
Либо просто
1 |
# iptables –A INPUT –p udp --dport 161 –s <IP-adress-cacti-server> -j ACCEPT |
(при этом политика по умолчанию для цепочки INPUT установлена в DROP)
1 |
# service snmpd start |
1 |
# ps ax | grep [sS]nmpd |
1 |
31266 ? S 0:00 /usr/sbin/snmpd -LS0-6d -Lf /dev/null -p /var/run/snmpd.pid |
Локально с клиента проверяем
1 |
# snmpwalk -v 2c -c mysecret localhost |
C Cacti сервера проверяем доступность клиента
1 |
# snmpwalk -v 2c -c mysecret <client_ip_address> |
11.Настройка ротации лог-файла Cacti
1 |
# nano /etc/logrotate.d/cacti |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/var/log/cacti/cacti.log { daily rotate 3 missingok notifempty dateext compress # Если Nginx create 0664 cacti nginx su cacti nginx # Если Apache # create 0664 cacti apache # su cacti apache # } |
Проверка синтаксиса созданного файла для Cacti.
1 |
# logrotate -v /etc/logrotate.d/cacti |
Графики для локального сервера Cacti
Источники:
Cacti
http://rtfm.co.ua/centos-ustanovka-cacti-na-nginx-php-fpm-mariadb/
https://www.digitalocean.com/community/tutorials/installing-the-cacti-server-monitor-on-ubuntu-12-04-cloud-server
http://redhat-club.org/2011/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-cacti-%D0%B2-centos-rhel-fedora
http://jnotes.ru/articles/ustanovka_i_nastroiyka_cacti_v_centos.html
http://xaxatyxa.ru/_centos/cacti-monitoring-snmp-centos.html
http://habrahabr.ru/post/115493/
Cacti Spine
http://www.cacti.net/spine_install_unix.php
http://www.cacti.net/spine_install.php