Cacti的起源与发展现状

故事要从2001年的某一天说起。
一个叫Ian Berry的中学生还在学习如何使用PHP和MySQL进行编程及功能的实现,那时候他业余时间为一个名不见经传的互联网运营商开发项目,他希望借助这个项目不仅可以精进自己的编程功力,还可以创建一个新的监控显示方法,既要比RRDTool容易使用、比MRTG灵活,又要更加容易扩展和调整。
天赋异禀的Ian在自己的不懈努力下,通过使用PHP语言,完成了第一个开源程序的版本。在随后的几年中,开源社区的开发爱好者们越发关注这只“带刺儿的仙人掌”,并在大家的共同推动下,0.8.6版本在2004年9月13日正式发布。0.8.6版本甚至可以认为是Cacti发展历史上的里程碑,它褪去了幼稚与粗糙,在全球开发者的细心呵护下开始展露自己成熟之后的迷人魅力,它的执行效率越来越高,经过优化的源代码使得Cacti变得越来越灵活,越来越易于扩展。

按照原来Roadmap的计划,1.0.0版本将会在2013年年底正式发布,但是这个开源项目太火了,大家开始不断地建立自己的分支版本,不断在各个版本基础上开发带有附加特性的新的子版本,这导致1.0.0版本一直难以统一。预见到这个状况可能发生,Ian开始在2012年6月份,集中力量重组研发资源配置,开始在提高研发效率、缩短研发周期方面花力气,直到目前为止官方已更新至1.2.14版本。

一,cacti介绍

1.什么是Cacti?

Cacti 在英文中的意思是仙人掌的意思,Cacti是一套基于PHP,MySQL,SNMPRRDTool开发的网络流量监测图形分析工具。它通过snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善。Cacti 的发展是基于让 RRDTool 使用者更方便使用该软件,除了基本的 Snmp 流量跟系统资讯监控外,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),它能够存储的数据笔数在创建时就已经定义。关于RRDTool的知识请参阅RRDTool教学。

2,什么是SNMP?

snmp(Simple Network Management Protocal, 简单网络管理协议)在架构体系的监控子系统中将扮演重要角色。大体上,其基本原理是,在每一个被监控的主机或节点上 (如交换机)都运行了一个 agent,用来收集这个节点的所有相关的信息,同时监听 snmp 的 port,也就是 UDP 161,并从这个端口接收来自监控主机的指令(查询和设置)。

如果安装 net-snmp,被监控主机需要安装 net-snmp(包含了 snmpd 这个 agent),而监控端需要安装 net-snmp-utils,若接受被监控端通过trap-communicate发来的信息的话,则需要安装net-snmp,并启用trap服务。如果自行编译,需要 beecrypt(libbeecrypt)和 elf(libraryelf)的库。

3,什么是RRDtools?

RRDtool是指Round Robin Database 工具(环状数据库)。Round robin是一种处理定量数据、以及当前元素指针的技术。想象一个周边标有点的圆环--这些点就是时间存储的位置。从圆心画一条到圆周的某个点的箭头--这就是指针。就像我们在一个圆环上一样,没有起点和终点,你可以一直往下走下去。过来一段时间,所有可用的位置都会被用过,该循环过程会自动重用原来的位置。这样,数据集不会增大,并且不需要维护。RRDtool处理RRD数据库。它用向RRD数据库存储数据、从RRD数据库中提取数据。

Cacti整个系统的架构是这样的:基于SNMP协议,被监控端是服务器,或一些网络设备,网络管理工作站,采用Linux或Freebsd操作系统,并且安装Net-SNMP工具,使用RRDTOOL采集数据,存储数据,并用Cacti调用rrdtool显示出来。

CACTI采用PHP编写,基于B/S结构。

Cacti实例应用:

1)网络设置

2)主机系统

(1)网络接口流量(进与出的带宽)

(2)监控CPU的负载、内存等等

(3)监控磁盘的空间、进程数等等

3)cacti常见的监测对象

(1)服务器资源:CPU、内存、磁盘、进程、连接数等

(2)服务器类型:WEB、Mail、FTP、数据库、中间件

(3)网络接口:流量、转发速度、丢包率

(4)网络设备性能、配置文件(对比与备份)、路由数

(5)安全设备性能、连接数、攻击数

(6)设备运行状态:风扇、电源、温度

(7)机房运行环境:电流、电压、温湿度

二,Cacti安装和配置

本章基于rpm一键包来部署,所用的包组,来自于whsir一键包

环境要求

  • CentOS 7.8.2003 (Core)
  • PHP 7.1
  • MariaDB或者Mysql5.7版本以上

1、卸载自带的mariadb相关服务

yum remove mariadb-libs

2、添加epel源

yum install epel-release

3、添加whsir一键包源

rpm -ivh http://mirrors.whsir.com/centos/whsir-release-centos.noarch.rpm

4、安装nginx、php、mysql

yum install wnginx wphp71 wmysql57

5、安装php扩展及其他所需依赖

yum install wphp71-ldap wphp71-snmp wrrdtool wnet-snmp wspine-1.2.2 sendmail

6、设置环境变量

echo 'export PATH=$PATH:/usr/local/nginx/sbin/:/usr/local/php/bin/:/usr/local/mysql/bin/' >> /etc/profile
source /etc/profile
 

7、设置两个软链接

ln -sv /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib64/libmysqlclient.so.20
ln -sv /usr/local/mysql/lib/libmysqlclient.so /usr/lib64/libmysqlclient.so
 

8、取消被禁用的php函数

vi /usr/local/php/etc/php.ini

找到disable_functions行,删除shell_exec,exec,popen,保存退出,重启php服务

/etc/init.d/php-fpm71 restart

9、启动相关服务

/etc/init.d/nginx start
/etc/init.d/mysql start
/etc/init.d/snmpd start
 

10、修改MySQL密码(默认为空)*

修改默认MySQL密码,创建cacti数据库,并添加相应权限

mysql -uroot -p
mysql> set password = password('whsir');
mysql> CREATE DATABASE cacti DEFAULT CHARACTER SET utf8;
mysql> GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY 'blog.whsir.com';
mysql> GRANT SELECT ON mysql.time_zone_name TO cacti@localhost IDENTIFIED BY 'blog.whsir.com';
mysql> ALTER DATABASE cacti CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
mysql> flush privileges;
mysql> quit
 

11、加载时区到mysql数据库

/usr/local/mysql/bin/mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -uroot -pwhsir mysql

12、下载cacti

网络不佳的情况下,强烈建议先下载到本地,再上传到服务器

mkdir /data/www
cd /data/www
wget https://www.cacti.net/downloads/cacti-1.2.14.tar.gz
tar xf cacti-1.2.14.tar.gz
mv cacti-1.2.14 cacti
 

13、修改cacti数据库配置文件

 
cd /data/www/cacti/include
vi config.php
 
$database_type = 'mysql';
$database_default = 'cacti';
$database_hostname = 'localhost';
$database_username = 'cacti';
$database_password = 'blog.whsir.com';
$database_port = '3306';
$database_retries = 5;
$database_ssl = false;
$database_ssl_key = '';
$database_ssl_cert = '';
$database_ssl_ca = '';
 

14、导入cacti.sql

mysql -ucacti -pblog.whsir.com cacti < /data/www/cacti/cacti.sql

touch日志文件,后续安装时用的到

touch /data/www/cacti/log/cacti.log
touch /data/www/cacti/log/cacti_stderr.log
 

15、做一些软链,后续安装用的到

ln -sv /usr/local/rrdtool/bin/rrdtool /usr/local/bin/rrdtool
ln -sv /usr/local/php/bin/php /usr/bin/php
ln -sv /usr/local/snmp/bin/snmpwalk /usr/local/bin/snmpwalk
ln -sv /usr/local/snmp/bin/snmpget /usr/local/bin/snmpget
ln -sv /usr/local/snmp/bin/snmpbulkwalk /usr/local/bin/snmpbulkwalk
ln -sv /usr/local/snmp/bin/snmpgetnext /usr/local/bin/snmpgetnext
ln -sv /usr/local/snmp/bin/snmptrap /usr/local/bin/snmptrap
 

16、修改cacti目录权限

chown -R www:www /data/www/cacti/

17、修改nginx配置

vi /usr/local/nginx/conf/vhost/demo.conf

修改root路径为root /data/www;,取消php注释include enable-php71.conf;,修改下server_name为本机IP,或者自己填个域名,自行hosts,不做过多说明!

18、重启nginx服务

nginx -t
/etc/init.d/nginx restart
 

19、spine配置

spine是一个基于C语言的,非常快速的轮询引擎,它是默认的cmd.php的可选替代,如果要使用spine需要单独的设置

cd /usr/local/spine/etc
cp spine.conf.dist spine.conf
vi spine.conf
 
DB_Host localhost
DB_Database cacti
DB_User cacti
DB_Pass blog.whsir.com
DB_Port 3306
 

验证一下

/usr/local/spine/bin/spine

返回以下内容表示成功

SPINE: Using spine config file [spine.conf]
SPINE: Version 1.2.2 starting
SPINE: Time: 1.0244 s, Threads: 1, Devices: 1

20、进入web安装

注意:如果访问有问题,修改后建议清空下浏览器缓存,或直接开浏览器隐身模式,以防有缓存

http://IP/cacti

默认账号admin 密码admin

第一次登陆后会提示更改密码,新版本密码要求有大小写特殊字符

设置语言、勾选许可协议,开始安装

安装向导检查,根据检查结果,自行更改php.ini和my.cnf文件,更改后记得重启,如相关参数在配置中不存在,手动添加即可

这里需要在my.cnf添加以下参数(注意最后两个参数如果不添加,后续可能会产生warning),然后重启MySQL

vi /etc/my.cnf
[client]
port = 3306
socket = /tmp/mysql.sock [mysqld]
port = 3306
socket = /tmp/mysql.sock
pid_file = /data/mysql/mysql.pid
datadir = /data/mysql slow_query_log=off
long_query_time=2
slow_query_log_file=/data/mysql/mysql_slow_query.log
log-error = /data/mysql/error.log skip-external-locking
key_buffer_size = 32M
max_allowed_packet = 100M
max_heap_table_size = 100M
table_open_cache = 1024
sort_buffer_size = 1m
net_buffer_length = 8K
read_buffer_size = 1m
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
thread_cache_size = 16
query_cache_size = 32M
tmp_table_size = 200M
performance_schema_max_table_instances = 500
join_buffer_size = 120M explicit_defaults_for_timestamp = true
#skip-networking
#bind-address = 127.0.0.1
max_connections = 500
max_connect_errors = 2000
open_files_limit = 65535 # binlog
log-bin=mysql-bin
binlog_format=mixed
server-id = 100
expire_logs_days = 10 # innodb
default_storage_engine = InnoDB
innodb_file_per_table = 1
innodb_data_home_dir = /data/mysql
innodb_data_file_path = ibdata1:64M:autoextend
innodb_log_group_home_dir = /data/mysql/
innodb_buffer_pool_size = 1280M
innodb_log_file_size = 32M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
collation-server=utf8mb4_unicode_ci
innodb_flush_log_at_timeout = 3
innodb_read_io_threads = 32
innodb_write_io_threads = 16
innodb_buffer_pool_instances = 17
innodb_io_capacity = 5000
innodb_io_capacity_max = 10000 [mysqldump]
quick
max_allowed_packet = 100M [myisamchk]
key_buffer_size = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M [mysqlhotcopy]
interactive-timeout
 

重启数据库

/etc/init.d/mysql restart

Poller轮询器配置

spine是一个高速的轮询器,是cmd.php的替代品,在cmd.php的基础上,拥有更好的灵活性、速度和并发性。

cacti默认使用的cmd.php进行轮询,由于我们之前已经安装好了spine,所以我这里就更改成spine。

在cacti监控系统中,选择系统配置→设置→Poller→采集类型选择spine→保存

将cmd.php改为spine

到此Cacti就安装完成

测试检验

验证snmp

使用以下命令验证snmp能否获取到本机的数据

[root@192 ~]# snmpwalk -v 2c -c public localhost

如果正常,会返回以下内容

配置crontab

如果不配置此功能,图形界面全部会显示The Cacti Poller has not run yet。

Centos7安装crontab服务(系统默认一般都自带此服务)

yum install crontabs -y

配置crontab前,请使用以下命令测试是否可以获取数据

/usr/bin/php /data/www/cacti/poller.php
//注意后面的poller.php地址,一定找确认地址正确。

检查图形是否已出图

原创来源:https://mefj.com.cn/lur2382.html

Cacti1.2.14最新版安装和配置(详细版)的更多相关文章

  1. Ubuntu 14.04 LTS 安装和配置Bochs

    Ubuntu 14.04 LTS 安装和配置Bochs       系统是:Ubuntu 14.04 LTS 64位 安装的是:bochs-2.6.8 Bochs 需要在 X11 环境下运行,因此你的 ...

  2. Tableau Server注册安装及配置详细教程

    Tableau Server注册安装及配置详细教程 本文讲解的是 Tableau Server 10.0 版本的安装及配置 这里分享的 TableauServer 安装版本为64位的10.0版本Ser ...

  3. ELK日志分析系统之Kibana7.x最新版安装与配置

    3.Kibana的简介 Kibana 让您能够自由地选择如何呈现自己的数据.Kibana 核心产品搭载了一批经典功能:柱状图.线状图.饼图.旭日图等等. 3.1.软件包下载地址:https://www ...

  4. MySql的安装及配置详细指引!

    一.安装My Sql数据库 1.1,首先下载MySQL与HeidiSQL工具,双击打开后可以看到名为”mysql-5.0.22-win32 Setup.exe”的安装程序,双击执行该程序. 1.2,打 ...

  5. Windows下MySQL 5.6安装及配置详细图解

    一.安装前的准备 1.下载安装程序包,可到MySQL官方网站http://www.mysql.com/下载,如图1-1: 图1-1 下载后的安装文件如图1-2所示: 图1-2 二.安装 1.双击下载的 ...

  6. Git安装与配置——详细教程1

    1.下载Git客户端 想要安装Git首先要下载Git的安装包程序. Git安装包下载地址:https://git-scm.com/downloads/ 2.安装Git 双击安装程序进行安装: a. 欢 ...

  7. MySQL的安装与配置——详细教程

    免安装版的Mysql MySQL关是一种关系数据库管理系统,所使用的 SQL 语言是用于访问数据库的最常用的 标准化语言,其特点为体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,在 Web 应 ...

  8. 【转】MySQL的安装与配置——详细教程-window系统下

    https://www.cnblogs.com/winton-nfs/p/11524007.html 免安装版的Mysql MySQL关是一种关系数据库管理系统,所使用的 SQL 语言是用于访问数据库 ...

  9. MySQL从卸载到安装!图文详细版(你想知道的全都有!!)

    2. MySQL的下载.安装.配置 2.1 MySQL的四大版本 MySQL Community Server社区版本,开源免费,自由下载,但不提供官方技术支持,适用于大多数普通用户. MySQL E ...

随机推荐

  1. luogu P3412 仓鼠找sugar II 期望 树形dp

    LINK:仓鼠找sugar II 以前做过类似的期望题目 加上最后的树形dp不算太难 还是可以推出来的. 容易发现 当固定起点和终点的时候 可以先固定根 这样就不用分到底是正着走还是倒着走了. 1为根 ...

  2. JS——变量提升和函数提升

    一.引入 在了解这个知识点之前,我们先来看看下面的代码,控制台都会输出什么 var foo = 1; function bar() { if (!foo) { var foo = 10; } aler ...

  3. docker 容器使用 systemctl 命令是报错

    看了许多解决方案,但是对于新手来说并不友好,不是特别清楚 报错内容: System has not been booted with systemd as init system (PID 1). C ...

  4. 强大的输入框-应用快速启动uTools

    uTools uTools是一个 极简.插件化.跨平台 的现代桌面软件.通过自由选配丰富的插件,打造你得心应手的工具集合. 当你熟悉它后,能够为你节约大量时间,让你可以更加专注地改变世界. uTool ...

  5. 谈下APP测试和WEB测试的区别

    先来讲下相同点: 1.都需要理论知识,相同的用例设计方法:边界值,等价类,错误推导法,场景法 2.同样的测试方法 验证功能是否满足需求 3.都需要检查UI  界面设计是否合理 4.性能检测  并发 吞 ...

  6. 丢弃掉那些BeanUtils工具类吧,MapStruct真香!!!

    在前几天的文章<为什么阿里巴巴禁止使用Apache Beanutils进行属性的copy?>中,我曾经对几款属性拷贝的工具类进行了对比. 然后在评论区有些读者反馈说MapStruct才是真 ...

  7. 2020-08-08:有一批气象观测站,现需要获取这些站点的观测数据,并存储到 Hive 中。但是气象局只提供了 api 查询,每次只能查询单个观测点。那么如果能够方便快速地获取到所有的观测点的数据?

    福哥答案2020-08-08: 参考答案:A.通过shell 或python 等调用api,结果先暂存本地,最后将本地文件上传到 Hive 中.B.通过 datax 的 httpReader 和 hd ...

  8. Visual Studio 2017版本15.9现在可用

    本文转自 https://blogs.msdn.microsoft.com/visualstudio/2018/11/19/visual-studio-2017-version-15-9-now-av ...

  9. SourceTreet提交时显示remote: Incorrect username or password ( access token )(4种解决办法)

    引言 我因为第一次安装Sources Tree的时候进行破解时(跳过安装时的登录),因为操作失误造成了好多bug,导致Sources Tree不论提交,拉取,获取,都会报remote: Incorre ...

  10. Vue中 props 这些知识点

    如果你一直在阅读有关"props"内容,你会发现我们可能也一直在使用它们(即使没有意识到),但也许你并不完全确定它们是什么.或者如何正确使用它们,并充分利用它们. 当你读完这篇指南 ...