Cacti监控服务器交换机部署手册

作者: seamus 分类: 开源监控 发布时间: 2018-05-07 01:14

Cacti介绍

本文中图片都没上传。需要原始文档与我联系就可以了

Cacti是一套基于PHP、MySQL、SNMP及RRDTool开发的网络流量监测图形分析工具。通过snmpget方式来获取数据,使用RRDtool绘制图形。更多信息查看官网。

 

Cacti架构环境

本文目的是部署通过cacti监控集群环境中各节点的磁盘IO,网卡流量,CPU,内存,负载,以及交换机的网络流量。

监控服务端:192.168.0.5

被监控端:192.168.0.3

被监控的交换机:192.168.0.200

Cacti安装篇

在监控服务端操作

1.Apache、MySQL、PHP的安装

Apache、MySQL、PHP软件及相关库文件、组件采用YUM方式来安装,也可以采用源码的方式安装。

yum install httpd -y

yum install mysql mysql-server mysql-devel -y

yum install php php-mysql -y

安装完成后将httpd和mysqld加入到开机启动项中,操作如下:

chkconfig httpd on

chkconfig mysqld on

2.库文件安装

yum install zlib -y

yum install freetype -y

yum install libjpeg -y

yum install fontconfig -y

yum install gd -y

yum install libxml2 -y

yum install php-gd -y

3.安装SNMP支持工具

yum install net-snmp -y

yum install net-snmp-utils -y

安装完成后将snmpd加入到开机启动项中,操作如下:

chkconfig snmpd on

4.安装RRDTool

yum install rrdtool -y

5.CACTI安装

Cacti的安装过程也很简单,因为它是基于PHP的WEB平台,只需要把CACTI源文件解压放到apache的WEB发布目录(默认为/var/www/html),修改好相应的配置文件即可。在选择版本时尽量选择较新的版本,因为旧的版本中没有集成Plugin Architecture,如果想通过插件扩展功能时还需要自己手工安装这个patch。

解压文件

tar –xzvf cacti-0.8.8f.tar.gz –C /var/www/html

cd /var/www/html

mv cacti-0.8.8f cacti

 

编辑配置

主要是编辑Cacti的config.php配置文件,配置连接到为cacti提供服务的MYSQL数据库用户名、密码、端口等

#cd /var/www/html
#vi cacti/include/config.php

$database_type = “mysql”;

$database_default = “cacti”;

$database_hostname = “localhost”;

$database_username = “cacti”;

$database_password = “cacti”;

$database_port = “3306”;

$database_ssl = false;

添加计划任务
添加cacti用户并添加cron任务使cacti每1分钟获得一次数据。
#useradd cacti

#su – cacti

#crontab -e
*/1 * * * * /usr/bin/php /var/www/html/cacti/poller.php > /dev/null 2>&1

目录属性

把cacti网站目录所属组改为cacti,并修改rra和log目录的属主为cacti用户

#su root

#chgrp -R cacti /var/www/html/cacti

#chown -R cacti /var/www/html/cacti/rra

#chown -R cacti /var/www/html/cacti/log

#chown -R cacti /var/www/html/cacti/poller.php

更简单的方法是将cacti整个目录的权限修改为cacti用户所有。如下:

chown –R cacti:cacti cacti

数据库配置

创建cacti所需要的数据库,数据库名和之前配置的数据库名database_default要一致否则cacti无法安装成功。创建好数据库后将cacti目录下的cacti.sql文件导入到刚创建的数据库中。

登录mysql并创建cacti数据库
#mysql

msyql>create database cacti;

mysql>exit

导入cacti.sql到cacti数据库
#mysql -u root -p cacti < /var/www/html/cacti/cacti.sql

有密码的输入密码,没密码直接回车即可。

数据库授权

建好数据库并导入表等数据文件后,接下来就是对数据库进行授权操作。

#mysql

mysql> use cacti

mysql> grant all on cacti.* to?cacti@localhost?identified by ‘cacti’;

mysql> flush privileges;

mysql> exit

验证

至此,整个cacti安装过程中的前期准备和配置工作已全部完成,接下来就是验证和安装cacti的时候了。在浏览器中输入http://192.168.0.5/cacti打开网页正常应该会看到如下页面,点击“Next”选择“New Install”后”Next”将会看到cacti所需要的工具和组件的相关信息,一切正常就点击“Finish”即可进入登录页面。首次登录账号、密码均为admin,会强制要求更改密码。

安装向导

安装方式选择New Install

 

工具及组件信息

登录界面

首次登录更改密码

 

完成上面一系列的操作后就正式进入了Cacti平台的主控制台,现在就可以开始监控你想要监控的设备了。

Cacti主控制台

 

6.插件安装

为了功能更加丰富、实用,还需要安装上相应的插件。在安装插件之前,需要先开启”Plugin Management”选项才能安装插件。选择“User Management”点击”admin”账户,找到“Realm Permissions”后勾选“Plugin Management”后即可开始安装插件。勾选后,在左侧“Configuration”选项中会出现“Plugin Management”。可以选择“Plugin Management”后进去看一下没有安装插件前的信息。

勾选“Plugin Management”

没有任何插件信息

现在正式进入插件的安装话题,cacti插件的安装也相当的方便。将下载好的插件包解压到cacti下的plugins目录,修改下config.php配置文件,就基本算完成了配置。config.php文件在cacti/include目录下。下面就以Monitor、Settings、Thold三个插件的安装演示下具体过程。安装这三个插件的目的是为了实现报警并发送邮件的功能。

  • http://docs.cacti.net/下载Monitor、Settings、Thold三个插件的安装包
  • 将Monitor、Settings、Thold解压到cacti/plugins目录下

tar -xzvf monitor-v1.3-1.tgz -C /var/www/html/cacti/plugins

tar -xzvf settings-v0.71-1.tgz -C /var/www/html/cacti/plugins

tar -xzvf thold-v0.5.0.tgz -C /var/www/html/cacti/plugins

  • 修改php配置文件,在<?php和?>之间添加如下插件信息。

$plugins = array();

$plugins[] = ‘thold’;

$plugins[] = ‘monitor’;

$plugins[] = ‘settings’;

  • 重新登录cacti定位到”Plugin Management”可以看到多出了以下三个插件,但“Status”栏显示的“Not Installed”表示未安装,现在只需点击下“Actions”栏的箭头图标即可安装。

插件Not Installed

 

插件Install Plugin

 

插件状态:Installed

 

插件:Enable Plugin

插件状态:Active

Cacti配置spine

出于效率原因,在大量采集数据时使用自带的cmd.php轮询器会比较慢,1分钟1次的采集频率可能无法完成轮询所有机器。这里为了优化,采用官方推荐的spine来高效轮询。本例使用源代码编译安装,下载的版本是spine-0.8.8f,所用cacti为0.8.7f
1.解压

# tar -xvf cacti-spine-0.8.8f.tar.gz
#cd cacti-spine-0.8.8f

# ./configure
# ./make
# ./make install

2.修改访问数据库的用户名密码信息

#cp??/usr/local/spine/etc/spine.conf.dist??/usr/local/spine/etc/spine.conf
# vi /usr/local/spine/etc/spine.conf

 

3.测试是否正常
# /usr/local/spine/bin/spine

SPINE: Using spine config file [../etc/spine.conf]
SPINE: Version 0.8.8a starting
SPINE: Time: 3.8489 s, Threads: 4, Hosts: 21

(如果提示找不到配置文件,可以加-C选项手动指定配置文件路径)

4.在cacti里设置spine路径
Console -> Configuration -> Settings -> Paths -> Alternate Poller Path -> Spine Poller File Path
/usr/local/spine/bin/spine

 

  1. 修改Cacti使用的Poller Type
    Console -> Cacti Settings->Poller->Poller Type
    在下拉中选择spine

 

 

 

被监控端配置

刚才添加的设备由于是cacti服务器本身,所以不需做任何的配置,因为在安装cacti的过程中已经配置好了。现在来看一下监控客户端需要做哪些设置才能被服务端所监控。客户端包括linux服务器、网络交换机等设备。

?? linux客户端的配置

在linux环境中监控客户端需要net-snmp组件的支持,在Centos系统中执行如下操作进行安装,且安装完成后将snmpd服务加入到开机启动服务中即可。

yum install net-snmp net-snmp-utils –y

chkconfig snmpd on

Cacti应用篇

添加设备

从console的Devices中添加你想要监控的主机或设备。在Devices页面的右上角点击“Add”按钮进入添加设备的界面。

监控CPU 内存 load

填写设备描述、设备IP或hostname(建议使用IP)、Host Template、勾选Monitor Host、SNMP版本信息,点击“Create”在左上角即返回客户端SNMP等信息。

添加主机信息

客户端SNMP信息

 

完成以上操作后在该页面找到”Associated Graph Templates”栏目,在此添加需要监控的项目的图表模板,我选择的是内存和CPU,load三项。在“Associated Data Queries”栏目中选择数据查询方式。全部设置完成后点击“Save”。

 

将页面定位到顶部右上角的“Create Graphs for this Host”选项,点击创建监控图表。

下面一张图由于已经创建好图表,所以无法勾选,正常是可以勾选想要的项目,如果全部监控勾选红色的框点击Create按钮即创建好图表。

 

为了能让图表展示在“graphs”中,我们需要将刚才创建的主机信息加入到“Graph Trees”中,默认只有一个Default Tree的分类,我已将其改为“Linux Server”,点击进去后在右上角点“Add”按钮,选择好类型和主机即可“Create”, “Create”完成后别忘了“Save”。

 

添加图表到Graph Tree

 

进入“graphs”即可看到刚刚添加的设备信息即图表。

监控磁盘IO

监控端:

解压snmpdiskio-0.9.6.zip复制partition.xml到cacti/resource/snmp_queries/下面

[root@test]#?cp partition.xml /var/www/html/cacti/resource/snmp_queries/

分别导入模板文件:

cacti_data_query_snmp_disk_statistics.xml

cacti_graph_template_disk_io_bytessec.xml

 

Cacti has imported the following items:

GPRINT Preset

[success]?Normal?[update]

Data Input MethodCacti has imported the following items:

?

GPRINT Preset

?

[success] Normal [update]

Data Input Method

?

[success] Get SNMP Data (Indexed) [update]

Data Template

?

[success] Disk – I/O [update]

Graph Template

?

[success] Disk – I/O (bytes/sec) [update]

Data Query

?

[success] SNMP – Disk Statistics [update]

在被监控端

复制snmpdiskio-0.9.6里面snmpdiskio到 /usr/local/bin下

然后赋予执行权限

Chmod +x /usr/local/bin/snmpdiskio

在/etc/snmp/snmpd.conf结尾添加:

extend .1.3.6.1.4.1.2021.54 hdNum /bin/sh /usr/local/bin/snmpdiskio?hdNum
extend.1.3.6.1.4.1.2021.55 hdIndex /bin/sh /usr/local/bin/snmpdiskio hdIndex
extend.1.3.6.1.4.1.2021.56 hdDescr /bin/sh /usr/local/bin/snmpdiskio hdDescr
extend.1.3.6.1.4.1.2021.57 hdInBlocks /bin/sh /usr/local/bin/snmpdiskio?hdInBlocks
extend.1.3.6.1.4.1.2021.58 hdOutBlocks /bin/sh /usr/local/bin/snmpdiskio?hdOutBlocks

重启snmpd服务

[root@node7 bin]# service snmpd restart
Stopping snmpd:??????????????????????????????????????????? [? OK? ]
Starting snmpd:??????????????????????????????????????????? [? OK? ]

(或者/usr/sbin/snmpd -c /etc/snmp/snmpd.conf)

查看日志

Tail -f /var/log/messages

常见故障:

如下贴一个测试例子中的snmp配置文件

[root@ruichi4 snmp]# cat /etc/snmp/snmpd.conf|grep -v ^#

com2sec notConfigUser? 192.168.0.5????? public

group?? notConfigGroup v1?????????? notConfigUser

group?? notConfigGroup v2c?????????? notConfigUse

view??? systemview??? included?? .1.3.6.1.2.1.1

view??? systemview??? included?? .1.3.6.1.2.1.25.1.1

view????? systemview??? included??? .1.3.6.1.2.1.

access? notConfigGroup “”????? any?????? noauth??? exact? all none none

view all??? included? .1?????????????????????????????? 80

com2sec notConfigUser?? default???????? public

syslocation Unknown (edit /etc/snmp/snmpd.conf)

syscontact Root <root@localhost> (configure /etc/snmp/snmp.local.conf)dontLogTCPWrappersConnects yes

extend .1.3.6.1.4.1.2021.54 hdNum /bin/sh /usr/local/bin/snmpdiskio hdNum

extend .1.3.6.1.4.1.2021.55 hdIndex /bin/sh /usr/local/bin/snmpdiskio hdIndex

extend .1.3.6.1.4.1.2021.56 hdDescr /bin/sh /usr/local/bin/snmpdiskio hdDescr

extend .1.3.6.1.4.1.2021.57 hdInBlocks /bin/sh /usr/local/bin/snmpdiskio hdInBlocks

extend .1.3.6.1.4.1.2021.58 hdOutBlocks /bin/sh /usr/local/bin/snmpdiskio hdOutBlocks

测试是否出数据:

[root@node7 log]# snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.58
UCD-SNMP-MIB::ucdavis.58.1.0 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.58.2.1.2.11.104.100.79.117.116.66.108.111.99.107.115 = STRING: “/bin/sh”
UCD-SNMP-MIB::ucdavis.58.2.1.3.11.104.100.79.117.116.66.108.111.99.107.115 = STRING: “/usr/local/bin/snmpdiskio hdOutBlocks”
UCD-SNMP-MIB::ucdavis.58.2.1.4.11.104.100.79.117.116.66.108.111.99.107.115 = “”
UCD-SNMP-MIB::ucdavis.58.2.1.5.11.104.100.79.117.116.66.108.111.99.107.115 = INTEGER: 5
UCD-SNMP-MIB::ucdavis.58.2.1.6.11.104.100.79.117.116.66.108.111.99.107.115 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.58.2.1.7.11.104.100.79.117.116.66.108.111.99.107.115 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.58.2.1.20.11.104.100.79.117.116.66.108.111.99.107.115 = INTEGER: 4
UCD-SNMP-MIB::ucdavis.58.2.1.21.11.104.100.79.117.116.66.108.111.99.107.115 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.58.3.1.1.11.104.100.79.117.116.66.108.111.99.107.115 = STRING: “0”
UCD-SNMP-MIB::ucdavis.58.3.1.2.11.104.100.79.117.116.66.108.111.99.107.115 = STRING: “0

完全没有问题,下面就可以在cacti上面添加监控:

 

  • Created graph: 192.168.0.103 – Disk I/O (bytes/sec) – sda
  • · Created graph: 192.168.0.3- Disk I/O (bytes/sec) – sda1
  • · Created graph: 192.168.0.3 – Disk I/O (bytes/sec) – sda2

点击create后 点击创建图

选择你需要监控的磁盘,点击下一步

往被监控端磁盘写数据

dd if=/dev/zero of=/root/zzz bs=4k count=250000

等一段时间后,查看流量图:

 

监控网卡流量

被监控端操作

打开默认的/etc/snmp/snmpd.conf文件,更改如下配置:
1、查找以下字段:
sec.name??source? ?? ?? ? community
com2sec notConfigUser??default? ?? ? public
将”comunity”字段改为你要设置的密码.比如”public”.
将“default”改为你想哪台机器可以看到你的snmp信息,如192.168.0.5。

2、查找以下字段:
# Finally, grant the group read-only access to the systemview view.
#? ?? ? group? ?? ?? ? context sec.model sec.level prefix read? ?write??notif
access??notConfigGroup “”? ?? ?any? ?? ? noauth? ? exact??all none none
将”read”字段改为all.

3、查找以下字段:
#? ?? ?? ???incl/excl subtree? ?? ?? ?? ?? ?? ?? ?? ???mask
#vie all? ? included??.1? ?? ?? ?? ?? ?? ?? 80
将该行前面的”#”去掉.

 

重启snmpd

Service snmpd restart

监控端操作

进入web端? 新建device

Create Graphs for this Host

选择需要监控的网卡,点击创建

等会后就可以查看

 

交换机配置

 

对网络交换机的监控需要用到SNMP协议,下面以华为S3700交换机为例演示配置和添加设备的过程。SNMP V3版本的认证需要设置团体和用户,在认证上稍微复杂些。SNMP V2C V2C版本的只需要设置好团体名、只读权限、监控服务器IP和trap端口(162)即可。

1.新建snmp?community?管理

设置后,应用,显示如下:

2、新建snmp?host管理

 

在交换机上配置完SNMP后即可被cacti所控制到,在cacti中添加设备的过程和上面添加主机的过程大同小异。添加设备成功后左上角显示的S6200的信息。监控交换机时Host Template选择ucd/net SNMP Host。SNMP Options如果选择V2版本,则默认配置不需要做任何更改。选择V3版本,则要进行简单的配置,配置的选项有SNMP Username、SNMP Password、SNMP Auth Protocol。本例是v2

添加设备成功

SNMP v2配置

 

 

图表模板和数据查询方式

创建图表-选择监控项和端口

端口流量图