Cacti是一套基于PHP,MySQL,Net-SNMP及RRDTool开发的网络流量监测图形分析工具。它通snmpget来获取数据,使用RRDtool绘画图形,提供了非常强大的数据和用户管理功能,同时也能增加模板,实现自定义系统状态检测。
Cacti所依赖的各个组件及其作用:
Apache2:web服务器
Net-snmp:用来获取远程主机的数据(数据采集)
rrdtool:存储采集的数据,绘图
Mysql:存储用户信息、模版及配置信息等
spine(可选):spine是一个cacti的轮询器(定时数据采集器),相比默认的cmd.php有更高的效率
Cacti安装(示例系统环境:Ubuntu12.04.2 LTS)
一、安装LAMP服务
$ sudo apt-get install apache2
$ sudo apt-get install mysql-server
$ sudo apt-get install php5
二、修改apache2默认根目录权限
$ sudo chmod 777 /var/www
三、安装NET-SNMP
通过Ubuntu软件源安装的net-snmp($ sudo apt-get install snmp snmpd)版本比网上的教程高,配置文件不一样,应此这里是到官网上下载较低版本http://downloads.sourceforge.net/project/net-snmp/net-snmp/EndOfLine/5.1.4.2/net-snmp-5.1.4.2.tar.gz,手动安装
$ tar -zxf net-snmp-5.1.4.2.tar.gz
$ cd net-snmp-5.1.4.2/
$ sudo apt-get install libperl-dev #net-snmp依赖包
$ ./configure
出现输入提示时除 Defaultversion of SNMP to use 选 2 其他可以直接回车采用默认
$ make
$ sudo make install
$ cp EXAMPLE.conf snmpd.conf
$ vim snmpd.conf
找到
# sec.name source community
com2sec local localhost COMMUNITY
com2sec mynetwork NETWORK/24 COMMUNITY
改成
com2sec local localhost public
com2sec mynetwork 10.209.0.0/16 public
参数简介
sec.name:安全体名字
source:定义请求的来源,在net-snmp中对来源ip进行访问控制,可填具体ip地址或网段
community:共同体的名称
并在snmpd.conf文件末尾添加
proxy -v 2c -c public localhost:1161 .1.3.6.1.4.1.42
表示可以通过net-snmp代理访问jvm snmp
$ cd $JAVA_HOME/jre/lib/management
$ vim management.properties
找到
# com.sun.management.snmp.port=<port-number>
改成
com.sun.management.snmp.port=1161
找到
#com.sun.management.snmp.interface=0.0.0.0
去掉#
$ cp snmp.acl.template snmp.acl
$ vim snmp.acl #配置JVM其允许通过snmp访问权限
找到
# acl = {
# {
# communities = public, private
# access = read-only
# managers = localhost
# }
# }
#
#
# trap = {
# {
# trap-community = public
# hosts = localhost
# }
# }
去掉所有的#
$ chmod 600 management.properties snmp.acl
进入tomcat目录,修改其jvm启动参数
$ vim startup.sh
在文件前面添加(如果已配置JRE_HOME环境变量可不要第一行)
export JRE_HOME=$JAVA_HOME/jre
CATALINA_OPTS="-Dcom.sun.management.jmxremote.port=1161 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
export CATALINA_OPTS
添加tomcat用户,在conf/tomcat-users.xml添加
<user username="admin" password="123" roles="admin,manager"/>
$ ./startup.sh #启动tomcat
在net-snmp-5.1.4.2目录启动snmpd服务,若先前已执行sudoapt-get install snmp snmpd,则需要sudo /etc/init.d/snmpd stop
$ sudo snmpd -f -Lo udp:161 -C -c snmpd.conf & #后台运行snmpd服务
验证net-snmp是否正常工作
$ netstat -anutl
$ snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.42
能出现161和1161的端口,这表明net-snmp和jvm能监听snmp客户端请求
能出现jdk相关的信息,这表明可以通过net-snmp采集jvm相关数据
三、安装RRDTool
$ sudo apt-get install rrdtool
四、安装php模块
$ sudo apt-get install php5-mysql php5-cgi php5-cli php5-snmp php-pear
五、安装Cacti
下载cacti http://www.cacti.net/downloads/cacti-0.8.8a.tar.gz
$ mv cacti-0.8.8a.tar.gz /var/www #将Cacti解压到apache2默认根目录
$ cd /var/www
$ tar xzf cacti-0.8.8a.tar.gz
$ mv cacti-0.8.8a cacti
$ rm cacti-0.8.8a.tar.gz
创建cacti数据库
$ cd /var/www/cacti
$ mysqladmin -u root -p create cacti
$ mysql -u root -p cacti < cacti.sql
配置cacti数据库连接
$ vim /var/www/cacti/include/config.php
修改数据库连接变量值
六、运行Cacti
实现cacti定时采集数据
$ crontab -e
选择某一编辑器后在末尾添加
*/5 * * * * /usr/bin/php /var/www/cacti/poller.php &> /dev/null
表示每隔5分钟执行一次脚本进行数据采集
重启apache2服务
$ sudo /etc/init.d/apache2 restart
出现设置页面,保持默认设置,默认用户名是admin,密码是admin
七、使用Cacti监控Tomcat
下载Tomcat模板 http://vdisk.weibo.com/s/yczLV
解压至某一目录
修改tomcatstats.pl,将my $xml = `GET $url`修改为my $xml = `wget -qO - $url`
输入http://127.0.0.1/cacti/templates_import.php(或点击左侧Import Templates导航)
导入cacti_host_template_tomcat_server.xml
成功导入模板会在页面显示导入项
将tomcatstats.pl移到/var/www/cacti/scritps
输入http://127.0.0.1/cacti/data_input.php(或点击左侧Data Input Methods导航)
点击列表项Tomcat Status
找到
perl<path_cacti>/scripts/tomcatstats.pl <hostname>:8444 admin passwordshttp-8080
改为
perl<path_cacti>/scripts/tomcatstats.pl <hostname>:8080 admin 123http-8080
(<path_cacti>,<hostname>相当于系统参数,会由系统替换成相应的值)
安装 XML::Simple使得perl能解析xml
$ perl -MCPAN -e"install XML::Simple"
输入http://127.0.0.1/cacti/host.php(或点击左侧Devices导航)
点击Add添加主机模板,Description填写tomcat,Hostname填写127.0.0.1,Host Template选择Tomcat Server,其他配置默认,点击create按钮
点击Create Graphs for this Host,在Graph Template Name栏选中所有模板复选框,点击create按钮
点击Edit this Host回到配置该Device页面
点击Data Source List配置数据源,点击Add,在Selected DataTemplate中选中Tomcat Status,点击Create,在点击Save
输入http://127.0.0.1/cacti/host.php,显示Devices列表
在列表中选中tomcat后面的复选框,Choosean action选择Place on a Tree(Default Tree)
点击上方的graphs按钮,在Tree中可以查看Tomcat的Connection Rate,HeapStatistics,Thread Statistics,Throughput统计图
若Tomcat - Connection Rate和Tomcat - Heap Statistics不能绘制图,可以输入http://127.0.0.1/cacti/graph_templates.php,分别选中Tomcat - Connection Rate和Tomcat - Heap Statistics,将Unit Grid Value设置为0,点击Save按钮
八、使用Cacti监控JVM
下载模板http://forums.cacti.net/download/file.php?id=8314
导入cacti_host_template_jvm_host.xml
添加Device,Description填写jvm,Hostname填写127.0.0.1,Host Template选择JVMHost主机模板,DownedDevice Detection选择Ping or SNMP Uptime,SNMP Version选择Version 2,其他默认,创建
点击CreateGraphs for this Host,选中所有图形模板,创建
点击Edit this Host回到该Device的配置页面
点击Data Source List选中所有的数据源,选择Enable动作,执行
在Devices列表中选中jvm后面的复选框,选择Place on a Tree(Default Tree)动作,执行