Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。
Cacti是通过 snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善。界面友好。软件 Cacti 的发展是基于让 RRDTool 使用者更方便使用该软件,除了基本的流量跟系统资讯监控外,Cacti 也可外挂 Scripts 及加上 Templates 来作出各式各样的监控图。
Cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户。因此,snmp和rrdtool是cacti的关键。snmp关系着数据的收集,rrdtool关系着数据存储和图表的生成。
MySQL配合PHP程序存储一些变量数据并对变量数据进行调用,如:主机名、主机ip、snmp团体名、端口号、模板信息等变量。
snmp抓到数据不是存储在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目录的rra文件夹下)。rrdtool对数据的更新和存储就是对rrd文件的处理,rrd文件是大小固定的档案文件(Round Robin Archive),它能够存储的数据笔数在创建时就已经定义。
Cacti 运行需要安装以下组件:
Apache : A Web server to display network graphs created by PHP and RRDTool.
MySQL : A Database server to store cacti information.
PHP : A script module to create graphs using RRDTool.
PHP-SNMP : A PHP extension for SNMP to access data.
NET-SNMP : A SNMP (Simple Network Management Protocol) is used to manage network.
RRDTool : A database tool to manage and retrieve time series data like CPU load, Network Bandwidth etc.
安装Apache
# yum -y install httpd
安装PHP
# yum -y install php php-common php-cli php-pear php-pdo php-mysqlnd php-gd php-mbstring php-mcrypt php-xml php-xmlrpc php-pecl-zendopcache
安装MySQL
# yum -y install mysql-server mysql
安装Cacti
# yum -y install cacti
yum安装cacti会把所依赖的rrdtool,snmp,php等等等依赖都安装好。
创建cacti数据库和cacti用户权限
mysql> create database cacti; Query OK, 1 row affected (0.00 sec) mysql> GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY 'cactipasswd'; Query OK, 0 rows affected (0.00 sec) mysql> FLUSH privileges; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye
查询cacti.sql所在目录
# rpm -ql cacti | grep cacti.sql
输出
/usr/share/doc/cacti-1.2.5/cacti.sql
导入cacti表
mysql -u cacti -p cacti < /usr/share/doc/cacti-1.2.5/cacti.sql Enter password:
导入mysql.time_zone_name表
# mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
授权cacti用户有访问mysql.time_zone_name表的权限
GRANT SELECT ON mysql.time_zone_name TO cacti@localhost; Query OK, 0 rows affected (0.00 sec) mysql> FLUSH privileges; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye
配置cacti数据库连接
# vim /etc/cacti/db.php
将数据库连接改为正确的连接账号
$database_type = 'mysql'; $database_default = 'cacti'; $database_hostname = 'localhost'; $database_username = 'cacti'; $database_password = 'cactipasswd'; $database_port = '3306'; $database_retries = 5; $database_ssl = false; $database_ssl_key = ''; $database_ssl_cert = ''; $database_ssl_ca = '';
配置php时区
# vim /etc/php.ini
找到date.timezone,改为 date.timezone = Asia/Shanghai
配置apache
# vim /etc/httpd/conf.d/cacti.conf
将
# httpd 2.4 Require host localhost
改为
# httpd 2.4 Require all granted
配置mysql参数
# vim /etc/my.cnf
添加如下参数
collation-server=utf8mb4_unicode_ci character-set-server=utf8mb4 max_heap_table_size=32M tmp_table_size=32M join_buffer_size=64M # 25% Of Total System Memory innodb_buffer_pool_size=1GB # pool_size/128 for less than 1GB of memory innodb_buffer_pool_instances=10 innodb_flush_log_at_timeout=3 innodb_read_io_threads=32 innodb_write_io_threads=16 innodb_io_capacity=5000 innodb_file_format=Barracuda innodb_large_prefix=1 innodb_io_capacity_max=10000
依次启动服务
# systemctl start httpd.service systemctl start mysqld.service systemctl start snmpd.service
配置开机启动
# systemctl enable httpd.service systemctl enable mysqld.service systemctl enable snmpd.service
配置定时任务
编辑文件/etc/cron.d/cacti
# vim /etc/cron.d/cacti
将注释去掉,5分钟抓取一次数据
*/5 * * * * cacti /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1
访问cacti
在浏览器输入 http://ip/cacti,通过默认的用户名admin,密码admin登陆。