CentOS 安装 Cacti

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 = utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
max_heap_table_size = 128M
max_allowed_packet = 16777216
tmp_table_size = 64M
join_buffer_size = 64M
innodb_file_per_table = on
innodb_buffer_pool_size = 512M
innodb_doublewrite = off
innodb_additional_mem_pool_size = 80M
innodb_lock_wait_timeout = 50
innodb_flush_log_at_trx_commit = 2

依次启动服务

# 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登陆。