Установка
cd /usr/ports/net-mgmt/cacti make install clean
По завершению установки получаю.
Installing cacti-1.2.7... ===> Creating groups. Creating group 'cacti' with gid '107'. ===> Creating users Creating user 'cacti' with uid '107'. Cacti is now installed. If you install it for the first time, you may have to follow this steps to make it work correctly: 1. Create the MySQL database, a cacti user, and initialize: a) CREATE DATABASE `cacti`; b) Create a mysql user/password for cacti: CREATE USER 'cacti'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; c) Add GRANTS: GRANT ALL ON `cacti`.* TO 'cacti'@'localhost'; GRANT SELECT ON `mysql`.`time_zone_name` TO 'cacti'@'localhost'; FLUSH PRIVILEGES; d) Import the default cacti database: mysql --database=cacti -ucacti -p < /usr/local/share/cacti/cacti.sql If you haven't already imported your MySQL timezone data, you need to do this: mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql NOTE: * Cacti does not LOCK TABLES. 2. Edit /usr/local/share/cacti/include/config.php from the template config.php.orig. PHP requires the time zone to be explicitly set rather that rely on the system time zone, otherwise poller complains. I added the following line to my config.php: date_default_timezone_set('America/Los_Angeles'); 3. Add the following line to cron for cacti: */5 * * * * /usr/local/bin/php /usr/local/share/cacti/poller.php > /dev/null 2>&1 4. Example Apache 2.4 configuration: (This assumes that you have installed a working PHP Apache install, e.g. with mod_php) <FilesMatch "\.php$"> SetHandler application/x-httpd-php </FilesMatch> <FilesMatch "\.phps$"> SetHandler application/x-httpd-php-source </FilesMatch> DirectoryIndex index.php DocumentRoot "/usr/local/share/cacti" Alias /cacti "/usr/local/share/cacti/" Alias /Cacti "/usr/local/share/cacti/" <Directory "/usr/local/share/cacti"> Require all granted AllowOverride None Order Allow,deny Allow from all </Directory> 5. Open a Cacti login page in your web browser and follow the install instructions. If you update cacti, open a login page and an updating process will start automatically. NOTEs as of 10Aug2014: 1) Cacti now better supports hier(7) a) Cacti log files are now found under /var/log/cacti where you can manage them using newsyslog. b) Cacti RRD files are now found under /var/db/cacti/rra. If you have an existing Cacti installation these paths are also found in Cacti's SQL database and MUST be updated. These two SQL commands should do the trick: UPDATE settings SET value='/var/log/cacti/log' \ WHERE name='path_cactilog'; UPDATE poller_item SET rrd_path=\ REPLACE(rrd_path,'/usr/local/share/cacti/rra','/var/db/cacti/rra') \ WHERE rrd_path REGEXP '^/usr/local/share/cacti/rra'; 2) The PERL paths in the Cacti PERL scripts have been updated to /usr/local/bin. Other Erratas: 1) Mount linprocfs in /compat/linux/proc will allow most scripts to work. 2) This package does not install a MySQL server in case you wish to use an external MySQL server. Install a package such as mysql57-server if you require a local server.
У меня MySQL и Cacti находятся на разных серверах. На сервере с MySQL создаю базу данных cacti. Создаю пользователя cacti и разрешаю ему управлять созданной базой данных. Настраиваю удалённый доступ к MySQL.
mysql -u root -p Enter password: SHOW databases; +--------------------+ | Database | +--------------------+ | information_schema | | ccnet-db | | mysql | | performance_schema | | seafile-db | | seahub-db | | sys | +--------------------+ 7 rows in set (0.08 sec) create database `cacti` character set = 'utf8'; SHOW databases; +--------------------+ | Database | +--------------------+ | information_schema | | cacti | | ccnet-db | | mysql | | performance_schema | | seafile-db | | seahub-db | | sys | +--------------------+ 8 rows in set (0.00 sec) CREATE USER 'cacti'@'localhost' IDENTIFIED BY 'rfRn3c_rkjn'; CREATE USER 'cacti'@'10.215.130.21' IDENTIFIED BY 'rfRn3c_rkjn'; GRANT ALL ON `cacti`.* TO 'cacti'@'10.215.130.21'; GRANT SELECT ON `mysql`.`time_zone_name` TO 'cacti'@'10.215.130.21'; CREATE USER 'root'@'10.215.130.21' IDENTIFIED BY 'Ce,,0nf#'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.215.130.21'; FLUSH PRIVILEGES; select user,host from mysql.user; +---------------+---------------+ | user | host | +---------------+---------------+ | cacti | 10.215.130.21 | | root | 10.215.130.21 | | root | 10.215.130.22 | | seafile | 10.215.130.22 | | cacti | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +---------------+---------------+
На компьютере с cacti в созданную базу данных загружаю таблицы
mysql --database=cacti -h 10.215.130.20 -u root -p < /usr/local/share/cacti/cacti.sql Enter password:
Подключаюсь к MySQL и проверяю создание талиц
mysql -h 10.215.130.20 -u cacti -p use cacti show tables; +-------------------------------------+ | Tables_in_cacti | +-------------------------------------+ | aggregate_graph_templates | | aggregate_graph_templates_graph | | aggregate_graph_templates_item | | aggregate_graphs | | aggregate_graphs_graph_item | | aggregate_graphs_items | | automation_devices | | automation_graph_rule_items | | automation_graph_rules | | automation_ips | | automation_match_rule_items | | automation_networks | | automation_processes | | automation_snmp | | automation_snmp_items | | automation_templates | | automation_tree_rule_items | | automation_tree_rules | | cdef | | cdef_items | | color_template_items | | color_templates | | colors | | data_debug | | data_input | | data_input_data | | data_input_fields | | data_local | | data_source_profiles | | data_source_profiles_cf | | data_source_profiles_rra | | data_source_purge_action | | data_source_purge_temp | | data_source_stats_daily | | data_source_stats_hourly | | data_source_stats_hourly_cache | | data_source_stats_hourly_last | | data_source_stats_monthly | | data_source_stats_weekly | | data_source_stats_yearly | | data_template | | data_template_data | | data_template_rrd | | external_links | | graph_local | | graph_template_input | | graph_template_input_defs | | graph_templates | | graph_templates_gprint | | graph_templates_graph | | graph_templates_item | | graph_tree | | graph_tree_items | | host | | host_graph | | host_snmp_cache | | host_snmp_query | | host_template | | host_template_graph | | host_template_snmp_query | | plugin_config | | plugin_db_changes | | plugin_hooks | | plugin_realms | | poller | | poller_command | | poller_data_template_field_mappings | | poller_item | | poller_output | | poller_output_boost | | poller_output_boost_processes | | poller_output_realtime | | poller_reindex | | poller_resource_cache | | poller_time | | reports | | reports_items | | sessions | | settings | | settings_tree | | settings_user | | settings_user_group | | sites | | snmp_query | | snmp_query_graph | | snmp_query_graph_rrd | | snmp_query_graph_rrd_sv | | snmp_query_graph_sv | | snmpagent_cache | | snmpagent_cache_notifications | | snmpagent_cache_textual_conventions | | snmpagent_managers | | snmpagent_managers_notifications | | snmpagent_mibs | | snmpagent_notifications_log | | user_auth | | user_auth_cache | | user_auth_group | | user_auth_group_members | | user_auth_group_perms | | user_auth_group_realm | | user_auth_perms | | user_auth_realm | | user_domains | | user_domains_ldap | | user_log | | vdef | | vdef_items | | version | +-------------------------------------+ 109 rows in set (0.00 sec)
Из файла /usr/local/share/cacti/include/config.php.sample создаю файл конфигурации в котором указываю пользователя и пароль базы данных cacti.
загружаю временные зоны в MySQL
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
В папке /var/log/cacti создаю файл для логов log и задаю права доступа www:www
touch /var/log/cacti/log
Меняю права доступа к папке cacti
chown -R www:www /usr/local/share/cacti/
Создаю папку и меняю права доступа
mkdir -p /usr/local/share/cacti/log/ chown -R www:www /usr/local/share/cacti/log/
В браузере набираю cacti.klotik.ru. На приглашение логина и пароля набираю admin/admin. Cacti предложит сменить пароль.
Input Validation Whitelist Protection Cacti Data Input methods that call a script can be exploited in ways that a non-administrator can perform damage to either files owned by the poller account, and in cases where someone runs the Cacti poller as root, can compromise the operating system allowing attackers to exploit your infrastructure. Therefore, several versions ago, Cacti was enhanced to provide Whitelist capabilities on the these types of Data Input Methods. Though this does secure Cacti more thouroughly, it does increase the amount of work required by the Cacti administrator to import and manage Templates and Packages. The way that the Whitelisting works is that when you first import a Data Input Method, or you re-import a Data Input Method, and the script and or aguments change in any way, the Data Input Method, and all the corresponding Data Sources will be immediatly disabled until the administrator validates that the Data Input Method is valid. To make identifying Data Input Methods in this state, we have provided a validation script in Cacti's CLI directory that can be run with the following options: php -q input_whitelist.php --audit - This script option will search for any Data Input Methods that are currently banned and provide details as to why. php -q input_whitelist.php --update - This script option un-ban the Data Input Methods that are currently banned. php -q input_whitelist.php --push - This script option will re-enable any disabled Data Sources. It is strongly suggested that you update your config.php to enable this feature by uncommenting the $input_whitelist variable and then running the three CLI script options above after the web based install has completed. Check the Checkbox below to acknowledge that you have read and understand this security concern
После обновления cacti внёс изменения в базу данных MySQL
mysql -u cacti -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 47041 Server version: 5.6.17-log Source distribution Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> use cacti; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> UPDATE settings SET value='/var/log/cacti/log' \ -> WHERE name='path_cactilog'; Query OK, 1 row affected (0,00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> UPDATE poller_item SET rrd_path=\ -> REPLACE(rrd_path,'/usr/local/share/cacti/rra','/var/db/cacti/rra') \ -> WHERE rrd_path REGEXP '^/usr/local/share/cacti/rra'; Query OK, 24 rows affected (0,02 sec) Rows matched: 24 Changed: 24 Warnings: 0 mysql> quit Bye
При попытке запуститтть poller в консоле получил ошибкау
# /usr/local/bin/php /usr/local/share/cacti/poller.php Shared object "libpng15.so.15" not found, required by "rrdtool"
Просматриваю библитеки
# ls -l /usr/local/lib/ | grep 'png*.*so' lrwxr-xr-x 1 root wheel 11 16 сен 23:57 libpng.so -> libpng16.so lrwxr-xr-x 1 root wheel 19 16 сен 23:57 libpng16.so -> libpng16.so.16.23.0 lrwxr-xr-x 1 root wheel 19 16 сен 23:57 libpng16.so.16 -> libpng16.so.16.23.0 -rwxr-xr-x 1 root wheel 195596 16 сен 23:57 libpng16.so.16.23.0
Создаю ссылку на библиотеку с коротой был установлен rrdtool и которой после обновления нет
# ln -s /usr/local/lib/libpng16.so.16.23.0 /usr/local/lib/libpng15.so.15
Ссылки:
http://dnaeon.github.io/cacti-freebsd/
https://ctopmbi4.wordpress.com/2014/08/29/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-cacti-%D0%BD%D0%B0-freebsd/