设为首页 收藏本站
查看: 1525|回复: 0

[经验分享] centos7下搭建cacti

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-3-21 09:18:39 | 显示全部楼层 |阅读模式
什么是Cacti?
Cacti 在英文中的意思是仙人掌的意思,Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。它通过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教学。

什么是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)的库。


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

wKiom1jP7_XirkrzAAN27j6Chfg079.png

工作原理:
snmp关系着数据的收集,rrdtool关系数据存储和图表的生成,snmp抓取的数据不是存储在数据库中,而是存储在rrdtool生成的rrd文件中,简单原理图如下:
wKioL1jP8CfRTdJ7AACq4NjV-Ho243.png

实验

1.搭建lamp环境

配置apache
[iyunv@cacti-server ~]# yum -y install httpd
[iyunv@cacti-server ~]# systemctl start httpd
[iyunv@cacti-server ~]# systemctl enable httpd
[iyunv@cacti-server ~]# firewall-cmd --permanent --add-service=http
success
[iyunv@cacti-server ~]# firewall-cmd --reload
success

配置mariadb
[iyunv@cacti-server ~]# yum -y install mariadb-server mysql-devel
[iyunv@cacti-server ~]# systemctl start mariadb
[iyunv@cacti-server ~]# mysql_secure_installation
Set root password? [Y/n]
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y

[iyunv@cacti-server ~]# mysql -u root -p
MariaDB [(none)]> grant all privileges on *.* to test@localhost identified by 'redhat'; 创建用于测试php和mariadb连通性的用户
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;

[iyunv@cacti-server ~]# systemctl restart mariadb
[iyunv@cacti-server ~]# systemctl enable mariadb
[iyunv@cacti-server ~]# firewall-cmd --permanent --add-port=3306/tcp
success
[iyunv@cacti-server ~]# firewall-cmd --reload
success

配置php
[iyunv@cacti-server ~]# yum -y install php php-mysql php-gd php-pear
[iyunv@cacti-server ~]# vim /etc/php.ini  
date.timezone =PRC      修改时区

[iyunv@cacti-server ~]# vim /var/www/html/index.php    编辑测试页面
<?php
    $conn=mysql_connect('localhost','test','redhat');
    if ($conn)
       echo "database connect ok";
    else
       echo "database connect failure";
?>
<?php
    phpinfo()
?>

[iyunv@cacti-server ~]# systemctl restart httpd

测试
wKiom1jP8F6T754ZAAAeyiQFris858.png


2.安装配置cacti

下载软件
[iyunv@cacti-server ~]# cd /usr/local/src/
[iyunv@cacti-server src]# tar zxvf cacti-0.8.8f.tar.gz
[iyunv@cacti-server src]# mv cacti-0.8.8f /var/www/html/cacti

创建cacti数据库和cacti用户,赋予权限
[iyunv@cacti-server ~]# mysql -u root -p
MariaDB [(none)]> create database cacti default character set utf8;
MariaDB [(none)]> grant all privileges on cacti.* to cacti@localhost identified by 'redhat';
MariaDB [(none)]> flush privileges;

把cacti.sql导入数据库
[iyunv@cacti-server cacti]# mysql -ucacti -predhat cacti < /var/www/html/cacti/cacti.sql

编辑config.php和global.php
[iyunv@cacti-server cacti]# vim /var/www/html/cacti/include/config.php|global.php
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "redhat";
$database_port = "3306";
$database_ssl = false;

安装rrdtool以生成图像
[iyunv@cacti-server src]# yum -y install rrdtool rrdtool-devel rrdtool-php rrdtool-perl
[iyunv@cacti-server src]# yum -y install gd gd-devel php-gd    ---rrdtool绘制图像需要的图形库

安装snmp服务
[iyunv@cacti-server cacti]# yum -y install net-snmp net-snmp-utils php-snmp net-snmp-libs

编辑配置文件
[iyunv@cacti-server ~]# vim /etc/snmp/snmpd.conf
41  com2sec notConfigUser  127.0.0.1       public
62  access  notConfigGroup ""   any     noauth    exact  all none none
85  view all    included  .1          80

[iyunv@cacti-server ~]# systemctl restart snmpd.service
[iyunv@cacti-server ~]# systemctl enable snmpd.service

授权目录权限
[iyunv@cacti-server ~]# useradd -r -M cacti
[iyunv@cacti-server ~]# chown -R cacti /var/www/html/cacti/rra/
[iyunv@cacti-server ~]# chown -R cacti /var/www/html/cacti/log/

配置一个抓图的计划任务
[iyunv@cacti-server ~]# crontab -e
*/5 * * * * /usr/bin/php  /var/www/html/cacti/poller.php >> /tmp/cacti_rrdtool.log

浏览器访问cacti管理页面进行安装

测试
[iyunv@cacti-server ~]# /usr/bin/php /var/www/html/cacti/poller.php
OK u:0.00 s:0.01 r:0.80
OK u:0.00 s:0.02 r:1.21
OK u:0.00 s:0.02 r:1.39
OK u:0.00 s:0.02 r:1.50
OK u:0.00 s:0.02 r:1.87
10/21/2016 04:02:32 PM - SYSTEM STATS: Time:1.4211 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:5 RRDsProcessed:5


3.安装Spine

注:由于cacti默认使用cmd.php来轮询数据,速度会很慢,特别是在监控节点比较多的情况下,cmd.php就更显不足了,因此我们采用Spine来轮询数据。cacti-spine是一个由C语言开发的,用于替代cmd.php的快速获取数据的引擎。
[iyunv@cacti-server ~]# cd /usr/local/src/
[iyunv@cacti-server src]# tar zxvf cacti-spine-0.8.8f.tar.gz
[iyunv@cacti-server cacti-spine-0.8.8f]# ./configure
[iyunv@cacti-server cacti-spine-0.8.8f]# make
[iyunv@cacti-server cacti-spine-0.8.8f]# make install

拷贝snmp的配置文件
[iyunv@cacti-server ~]# cp /usr/local/spine/etc/spine.conf.dist /etc/spine.conf
注:spine默认配置文件需要放在/etc才会生效,否则测试时会报如下错误:
SPINE: Poller[0] FATAL: Unable to read configuration file! (Spine init)

编辑配置文件
[iyunv@cacti-server ~]# vim /etc/spine.conf
DB_Host         localhost
DB_Database     cacti
DB_User         cacti
DB_Pass         redhat
DB_Port         3306

测试
[iyunv@cacti-server ~]# /usr/local/spine/bin/spine
SPINE: Using spine config file [/etc/spine.conf]
SPINE: Version 0.8.8f starting
SPINE: Time: 0.1278 s, Threads: 5, Hosts: 2

修改web的设置
进入Cacti页面设置spine路径
Console -> Configuration -> Settings -> Paths -> Alternate Poller Path -> Spine Poller File Path->/usr/local/spine/bin/spine

修改Cacti使用的Poller Type
Console -> Configuration -> Settings ->Poller->Poller Type->spine

查看日志
[iyunv@cacti-server ~]# cat /var/www/html/cacti/log/cacti.log
10/22/2016 12:45:50 AM - SYSTEM STATS: Time:0.1146 Method:spine Processes:1 Threads:1 Hosts:2 HostsPerProcess:2 DataSources:0 RRDsProcessed:0


4.添加被监控主机

安装snmp服务
[iyunv@cacti-client ~]# yum -y install net-snmp net-snmp-devel net-snmp-utils

编辑配置文件
[iyunv@cacti-client ~]# vim /etc/snmp/snmpd.conf
41  com2sec notConfigUser  192.168.23.156       public
62  access  notConfigGroup ""   any     noauth    exact  all none none
85  view all    included  .1                     80

[iyunv@cacti-client ~]# systemctl restart snmpd
[iyunv@cacti-client ~]# systemctl enabled snmpd

配置防火墙
[iyunv@cacti-client ~]# firewall-cmd --permanent --add-port=161/udp
success
[iyunv@cacti-client ~]# firewall-cmd --reload
success


5.监控apache

客户端的配置

编辑apache的配置文件,加入server-status模块的设置
[iyunv@cacti-client ~]# vim /etc/httpd/conf/httpd.conf
ExtendedStatus On
<Location /server-status>
  SetHandler server-status
  Order deny,allow
  Deny from all
  Allow from all
</Location>
[iyunv@cacti-client ~]# systemctl restart httpd
[iyunv@cacti-client ~]# systemctl enable httpd

查看apache加载的模块
[iyunv@cacti-client ~]# apachectl -t -D DUMP_MODULES|grep status
status_module (shared)

访问http://192.168.23.157/server-status查看模块的详细信息
wKioL1jP8MGDiSU_AAFWXxYPFSo679.png
[iyunv@cacti-client ~]# firewall-cmd --permanent --add-service=http
success
[iyunv@cacti-client ~]# firewall-cmd --reload
success

服务端的配置

安装监控apache的php页面
[iyunv@cacti-server ~]# cd /usr/local/src/
[iyunv@cacti-server src]# unzip ApacheStats_0.8.2.zip
[iyunv@cacti-server src]# cd ApacheStats_0.8.2/
[root@cacti-serverApacheStats_0.8.2]#cp ss_apache_stats.php /var/www/html/cacti/scripts/

导入模板
在Cacti Web界面导入cacti_host_template_webserver_-_apache.xml模板:
点击Import/Export->Import Templates,上传模板即可

添加服务器并创建图表
登录Cacti Web界面,添加被监控apache服务器设备,并创建相应图表:
Devices->Add->WebServer–Apache模板->Create New Graphs,添加所需图表即可。等待一段时间就会出图


6.监控mariadb

[iyunv@cacti-client ~]# mysql -uroot -predhat
MariaDB [(none)]> grant process,super,replication client on *.*to 'mysqltest'@'192.168.23.156' identified by 'redhat';  创建用于监控主机连接mariadb进行监控的用户
MariaDB [(none)]> flush privileges;

[iyunv@cacti-client ~]# systemctl restart mariadb

[iyunv@cacti-client ~]# firewall-cmd --permanent --add-port=3306/tcp
success
[iyunv@cacti-client ~]# firewall-cmd --reload
success

安装监控mariadb的php页面文件
[iyunv@cacti-server ~]# cd /usr/local/src/
[iyunv@cacti-server src]# tar zxvf percona-monitoring-plugins-1.1.6
[iyunv@cacti-server src]# cd percona-monitoring-plugins-1.1.6/cacti/scripts/
[iyunv@cacti-serverscripts]#cpss_get_mysql_stats.php  /var/www/html/cacti/scripts/

编辑页面文件
[iyunv@cacti-server scripts]# vim /var/www/html/cacti/scripts/ss_get_mysql_stats.php
$mysql_user = 'mysqltest';  用于监控主机连接mariadb的用户
$mysql_pass = 'redhat';    用户密码

导入模板
在Cacti Web界面导入cacti_host_template_percona_mysql_server_ht_0.8.6i-sver1.1.6.xml模板:
点击Import/Export->Import Templates,上传模板即可

添加服务器并创建图表
登录Cacti Web界面,添加被监控mariabdb服务器设备,并创建相应图表:
Devices->Add->dbServer–Mysql模板->Create New Graphs,添加所需图表即可。等待一段时间就会出图


7.邮件报警

下载插件
[iyunv@cacti-server ~]# cd /usr/local/src/
[iyunv@cacti-server src]# tar zxvf settings-v0.71-1.tgz
[iyunv@cacti-server src]# mv settings /var/www/html/cacti/plugins/
[iyunv@cacti-server src]# tar zxvf thold-v0.5.0.tgz
[iyunv@cacti-server src]# mv thold /var/www/html/cacti/plugins/

访问cacti管理页面安装插件


测试

wKioL1jP8Pqg195uAABXfSJak9E944.png
wKiom1jP8Pfy2AHGAAA_iFyKtak004.png

告警被触发
查看邮件
[iyunv@cacti-server ~]# cat  /var/spool/mail/root
..................................
..................................
Subject: ALERT: test - Used Space - / [hdd_used] [hdd_used] went above threshold of 25 with 36.8871
Date: Mon, 24 Oct 2016 14:00:03 +0800
..................................
An alert has been issued that requires your attention.
..................................
Host: test (192.168.23.157)
Message: ALERT: test - Used Space - / [hdd_used] [hdd_used] went above threshold of 25 with 36.8871
..................................
Content-Type: image/jpg
Content-Disposition: inline; filename="103.jpg"
...................................
...................................



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-352781-1-1.html 上篇帖子: Cacti 监控服务 下篇帖子: cacti 安装配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表