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

[经验分享] 你还在用mrtg吗?--使用cacti监测系统性能

[复制链接]

尚未签到

发表于 2019-1-12 08:14:28 | 显示全部楼层 |阅读模式
  
欢迎转载 ,但有任何修改請來信告知,不得作为商业用途
  
作者: [url=http://www.joecen.com]JoeCen[joecen{at}21cn{dot}com]
  
转载时请保持该通告
  

  
FAQ已经写好,上面都是本贴上面的问题。
  
请大家以后提问前先查看该FAQ!

  
[url=http://bbs.chinaunix.net/viewthread.php?tid=648262]我的Cacti--FAQ
  

  
前言:
  
在CU的论坛上经常看到有人问MRTG的问题,还有很多的关于MRTG的精彩文章。MRTG的确是非常好的东东,但我认为它毕竟已经是一套很旧的软件了,其作者在多年前就已经开发了RRDTool代替该软件,现在已经发展得很成熟。既然有更好的选择,为什么我们还要用MRTG呢?
  

  
第一部分,介绍:
  
2004年我刚进某公司工作,当时我使用MRTG建立了一套系统,专门监测我们服务器和其它网络设备的流量。
  

  
后来我想将其它的系统性能比如CPU负载、系统负载,网络连接数等一起监测起来。我在网上查找了很多的资料,也实现了这些功能,但总觉得实现的太费劲,管理起来太麻烦了。比如我有几百个被监测点,分布在不同的机房,而且我需要将这些服务器和网络设备分类,这样的话我就要将这些被监测点放在不同的mrtg配置文件中,运行多个crontab,而且自己还写了一些html页面对其进行管理。
  
后来有幸看到了abelyang兄写的大作“[url=http://bbs.chinaunix.net/viewthread.php?tid=552218]rrdtool教学”,里面列举了rrdtool的种种优点,于是我下定决心要将MRTG更换为rrdtool。
  

  
MRTG的优点:简单、易上手,基本安装完了之后只要更改一下配置文件即可。
  
缺点:
  
1、使用文本式的数据库,数据不能重复使用;
  
2、只能按日、周、月、年来查看数据;
  
3、只能画两个DS(一条线、一个块);
  
4、每取一次数据即需要绘图一次,浪费系统资源;
  
5、无管理功能;

  

  
rrdtool的优点:
  
   1、使用rrd存储格式,数据能重复使用,比如我可以将一个rrd文件中的数据与另一个rrd文件中的数据相加。
  
   2、可以定义任意时间段画图,即你可以画出一张半年以来的数据的图,也可以画出一张半小时以来的图。
  
   3、能画任意个DS。
  
   4、CDEF让你能任意摆弄数据。
  

  
缺点:
  
1、rrdtool的作用只是存储数据和画图,它没有mrtg中集成的数据采集功能;
  
2、在命令行的使用非常复杂,参数极多。
  
3、无管理功能。

  

  
简单的说,rrdtool就是一个强大的绘图的引擎。
  

  
由于其非常复杂的命令,对用户非常不友好,我一度想自己用php写一套系统。幸运的是,半年前我找到了cacti(www.cacti.net)。对该工具我只有一个字形容:“great!”。
  
cacti其实是一套php程序,它运用snmpget采集数据,使用rrdtool绘图。它的界面非常漂亮,能让你根本无需明白rrdtool的参数能轻易的绘出漂亮的图形。更难能可贵的是,它提供了强大的数据管理和用户管理功能,一张图是属于一个host的,每一个host又可以挂载到一个树状的结构上。用户的管理上,作为一个开源软件,它居然做到为指定一个用户能查看的“树”、host、甚至每一张图,还可以与LDAP结合进行用户的验证!我不由得佩服作者考虑的周到!Cacti还提供自己增加模板的功能,让你添加自己的snmp_query和script!可以说,cacti将rrdtool的所有“缺点”都补足了!
  
最近在公司的内部培训中,我为Cacti画了两张图,里面是cacti的架构和cacti的工作流程,现在也一并发上来。
  

  
[ 本帖最后由 joecen 于 2006-6-13 19:44 编辑 ]
  

  
http://linux.chinaunix.net/bbs/attachments/cacti____.gif
  

  


Cacti的架构  

  

  
http://linux.chinaunix.net/bbs/attachments/cacti________.gif
  

  


Cacti的工作流程  

  

  

  
joecen 回复于:2005-08-15 15:41:30
  

  
第二部分:Cacti的安装
  
该安装文档是我参照www.cacti.net上的官方文档进行安装后,总结出来的。平台是Linux或FreeBSD。
  

  
1、安装mysql
  

  
cacti从0.4.8g版本开始支持mysql5数据库 (2006/1/12更新)
  

  
下载源码:
  
http://www.signal42.com/mirrors/mysql/Downloads/MySQL-4.0/mysql-4.0.23.tar.gz
  

  
for linux:
  
http://www.signal42.com/mirrors/mysql/Downloads/MySQL-4.0/mysql-standard-4.0.23-pc-linux-i686.tar.gz
  

  
for freebsd47:
  
http://www.signal42.com/mirrors/mysql/Downloads/MySQL-4.0/mysql-standard-4.0.22-unknown-freebsd4.7-i386.tar.gz
  

  
上面的链接已经失效,请到
  
http://dev.mysql.com/downloads/mysql/4.1.html
  

  
http://www.mysql.com
  
下载mysql数据库

  

  

  
安装:
  

  shell>; groupadd mysql
  

  shell>; useradd -g mysql mysql
  

  shell>; cd /usr/local
  

  shell>; gunzip < /PATH/TO/MYSQL-VERSION-OS.tar.gz | tar xvf -
  

  shell>; ln -s FULL-PATH-TO-MYSQL-VERSION-OS mysql
  

  shell>; cd mysql
  

  shell>; scripts/mysql_install_db --user=mysql
  

  shell>; chown -R root .
  

  shell>; chown -R mysql data
  

  shell>; chgrp -R mysql .
  

  shell>; bin/mysqld_safe --user=mysql &
  

  

  

  

  
./bin/mysqladmin -u root password &quot;yourpasswd&quot; 基于安全的原因,为root用户设置密码才能让root用户登陆mysql,不然会有2002错误出现
  

  
建立启动脚本:
  

  
cp ./support-files/mysql.server /etc/init.d/mysql
  

  ln -s ../init.d/mysql S85mysql
  

  ln -s ../init.d/mysql K85mysql
  

  

  

  
2、安装apache
  
下载:
  
http://apache.freelamp.com/httpd/httpd-2.0.54.tar.bz2
  

  
安装:
  

  
./configure --prefix=/www --enable-so
  

  make && make install
  

  

  

  
建立启动脚本
  

  
cp /www/bin/apachectl /etc/init.d/httpd
  

  cd /etc/rc3.d
  

  ln -s ../init.d/httpd S85httpd
  

  ln -s ../init.d/httpd K85httpd
  

  

  

  
启动
  
/www/bin/apachectl start
  

  
3、安装php
  
下载:
  
http://us4.php.net/get/php-4.3.10.tar.gz/from/cn2.php.net/mirror
  

  
安装:
  

  
/configure --prefix=/www/php --with-apxs2=/www/bin/apxs --with-config-file-path=/www/php --enable-sockets --with-mysql=/usr/local/mysql --with-zlib-dir=/usr/include --with-gd
  

  make && make install
  

  cp php.ini-dist /www/php/php.ini
  

  vi /www/conf/httpd.conf
  

  加入:
  

  ###############for php and cacti###################
  

  AddType application/x-tar .tgz
  

  AddType application/x-httpd-php .php
  

  AddType image/x-icon .ico
  

  DirectoryIndex index.php index.html index.html.var
  

  #######################over########################
  

  

  ../bin/apachectl restart
  

  

  

  
4、设置mysql
  

  
# mysql -u root -prootroot
  

  Welcome to the MySQL monitor. Commands end with ; or \g.
  

  Your MySQL connection id is 10 to server version: 4.0.23-standard
  

  

  Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
  

  

  mysql>; create database cactidb;
  

  Query OK, 1 row affected (0.00 sec)
  

  

  mysql>; grant all on cactidb.* to root;
  

  Query OK, 0 rows affected (0.01 sec)
  

  

  mysql>; grant all on cactidb.* to root@localhost;
  

  Query OK, 0 rows affected (0.01 sec)
  

  

  mysql>; grant all on cactidb.* to cactiuser;
  

  Query OK, 0 rows affected (0.00 sec)
  

  

  mysql>; grant all on cactidb.* to cactiuser@localhost;
  

  Query OK, 0 rows affected (0.01 sec)
  

  

  mysql>; set password for cactiuser@localhost=password('cactipw');
  

  Query OK, 0 rows affected (0.00 sec)
  

  

  mysql>; exit
  

  

  

  
5、安装rrdtool
  
下载:
  
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/rrdtool-1.0.x/rrdtool-1.0.50.tar.gz
  
然后
  
./configure
  
make && make install 即可
  
与mrtg相比,rrdtool自带了gd库,所以不用先安装gd库.(不过由于rrdtool自带的gd库不支持中文,所以rrdtool画出来的图也不能有中文,否则会出现乱码).
  

  
注意:rrdtool1.2的版本由于已经不再自带外部的lib库(如cgilib,zlib等),所以需要从http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/libs/下载这些库来安装。建议还是使用1.0的版本,比较方便。
  

  
6、安装net-snmp
  
几乎所有的网络设备和操作系统默认都安装了snmp服务。
  
unix系统安装的都是net-snmp或ucd-snmp(其实两个都是同一组人写的)。
  
如果没有安装snmp,可以到net-snmp.sourceforge.org上下载源码编译安装。
  
我这里说的安装SNMP服务并不是要求安装SNMPD,其实是Cacti需要用到net-snmp中的两个命令――snmpwalk和snmpget进行数据的采集。
  

  
我们可以直接在系统中运行snmpwalk和snmpget看是否有该命令,如果有则不用安装了。
  

  
7、安装cacti
  
注意:写该文档时cacti的最高版本时0.8.6c,现在的最高版本是0.8.6f。由于0.8.6f以下的版本有SQL注入漏洞,请大家下载0.8.6f或以上的版本进行安装。
  
下载:
  
http://www.cacti.net/downloads/cacti-0.8.6c.tar.gz
  

  
安装:
  

  
cp cacti-0.8.6c.tar.gz /www/htdocs
  

  tar xzvf cacti-0.8.6c.tar.gz
  

  mv cacti-0.8.6c cacti
  

  cd cacti
  

  

  

  
导入表:
  

  
/usr/local/mysql/bin/mysql –u root –prootroot cactidb < cacti.sql
  

  chown –R cactiuser rra/ log/
  

  

  

  
设置配置文件:
  

  vi /www/htdocs/cacti/include/config.php
  

  

  $database_type = “mysql”;
  

  $database_default = “cactidb”;
  

  $database_hostname = “localhost”;
  

  $database_username = “cactiuser”;
  

  $database_password = “cactipw”;
  

  

  

  
核对以上几项是否正确
  

  

  
Crontab –u cactiuser –e
  

  为cactiuser用户加入
  

  */5 * * * * /www/php/bin/php /www/htdocs/cacti/poller.php >; /dev/null 2>;&1
  

  

  
(不要使用root用户运行上面的命令,否则要再运行一次chown –R cactiuser rra/ log/)
  

  
8、页面设置:
  

  
在浏览器上输入:
  
http://IP/cacti
  
进入cacti的初始设置页面:
  
在这里我们要输入一些原始的信息:
  

  
NEXT -》
  
输入一些信息,如rrdtool、php、snmpwalk、snmpget的位置,使用ucd-snmp还是net-snmp等 -》
  
输入原始的用户和密码:admin/admin -》
  
更改admin用户的密码 -》
  
点击 Save
  

  
安装完成!!!
  
现在可以在浏览器中进入Cacti的世界了!
  

  
[ 本帖最后由 joecen 于 2006-1-13 10:36 编辑 ]
  

  
joecen 回复于:2005-08-15 15:44:21
  

  
第三部分,cacti的部分界面
  

  
http://linux.chinaunix.net/bbs/attachments/_________84251124092063.jpg
  

  


树状结构显示图形  

  

  
http://linux.chinaunix.net/bbs/attachments/_________44101124092291.jpg
  

  


主控制台  

  

  
joecen 回复于:2005-08-15 15:44:56
  

  
开始考虑到大家都用过MRTG,应该对snmp有所了解,所有没有将snmp的配置写上来。现在发现有些朋友发贴说不能取到CPU和系统负载的数据,其原因应该是snmp设置默认没有允许取这些数据造成的。下面是我对linux和FreeBSD下的net-snmp的一些简单的配置。
  

  
一、Linux(RedHat)的配置
  

  
打开默认的/etc/snmp/snmpd.conf文件,更改如下配置:
  

  

  
1、查找以下字段:
  

  
#       sec.name  source          community
  

  com2sec notConfigUser  default       public
  

  

  
将&quot;comunity&quot;字段改为你要设置的密码.比如&quot;public&quot;.
  

  
将“default”改为你想哪台机器可以看到你的snmp信息,如10.10.10.10。
  

  
2、查找以下字段:
  

  
####
  

  # Finally, grant the group read-only access to the systemview view.
  

  

  

  #       group          context sec.model sec.level prefix read   write  notif
  

  access  notConfigGroup &quot;&quot;      any       noauth    exact  all none none
  

  
将&quot;read&quot;字段改为all.
  

  
#access  notConfigGroup &quot;&quot;      any       noauth    exact  systemview none none
  

  

  

  
3、查找以下字段:
  

  
##           incl/excl subtree                          mask
  

  #view all    included  .1                               80
  

  
将该行前面的&quot;#&quot;去掉.
  

  

  

  

  
保存关闭.
  

  

  
4、运行/etc/init.d/snmpd start命令运行snmpd.
  

  
最后运行netstat -ln查看161端口是否打开了.
  

  

  
二、FreeBSD
  
如果使用port安装net-snmp,默认的配置文件应该是在/usr/local/share/snmp/snmpd.conf(没有默认的文件)。
  
可以建立一个简单的配置文件,如:
  

  
syslocation  YourDefineName
  

  

  syscontact  YourEmailAddress
  

  

  sysservices 77
  

  

  rocommunity  public  (请更改)
  

  

  load  12 12 12
  

  

  
然后运行snmpd,netstat 看是否打开了161端口。
  

  

  
上述用法只针对默认的安装,如果你是自定义的安装请依照你的安装目录来设置。
  

  

  
我自己做的图:
  

  
http://linux.chinaunix.net/bbs/attachments/cpu____.jpg
  

  

  

  

  
http://linux.chinaunix.net/bbs/attachments/squid______.jpg
  

  

  

  

  
joecen 回复于:2005-08-15 15:45:44
  

  
Cacti虽然只是一套开源软件,但我觉得它比起其它的商业管理软件来说真的是毫不逊色,而MRTG根本就无法与其相比,希望大家能好好使用。
  
真心希望在论坛上看到讨论得最多的是Cacti和RRDTool而不只是MRTG。 :D
  

  
参考:
  
http://bbs.chinaunix.net/forum/viewtopic.php?t=552218&highlight=RRDTOOL
  

  
http://www.cacti.net/downloads/docs/html/install_unix.html
  

  
cacti的使用文档:
  
http://www.cacti.net/downloads/docs/html/
  

  
Cacti FAQ:
  
http://www.cacti.net/downloads/docs/html/faq.html
  

  
FAQ已经写好,上面都是本贴上面的问题。
  
请大家以后提问前先查看该FAQ!

  

  
[url=http://bbs.chinaunix.net/viewthread.php?tid=648262]我的Cacti--FAQ
  

  
2005-10-21日补充:
  

  
引用:从之前的贴子可以看出,大家最关心的有两个问题:  
  
1、是如何在cacti中实现rrdtool的合并数据的功能;
  
2、是如何自定义脚本,建立自己的监测内容。
  

  
其实如果你了解rrdtool的话,这两个问题不难解决。
  

  
由于本贴实在是太长了,所有我新开了一贴专门讲这些问题。
  

  
http://bbs.chinaunix.net/forum/viewtopic.php?show_type=&p=4257111
  

  




运维网声明 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-662206-1-1.html 上篇帖子: cacti 中文 下篇帖子: cacti0.8.7g监控速配+msn,2010版飞信报警
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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