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