安装好cacti后首先要设置获取数据的方式

Cacti 获取数据的方式有两种,
1.监控端的脚本(可以是php, shell, perl 或其他脚本)
2.或者 snmp 协议获取。

Cacti 会在固定的时间间隔启动轮询进程,使用定义好的方式获取被监控的数据,这种监控方式通常叫做 主动监控 。

执行轮询获取数据的进程叫做 cmd.php 它由 poller.php 调用, poller.php 在监控机上由计划任务定时执行。数据量多的时候,可以设置启动多个 cmd.php 进程,
       或者使用 spine 这个程序,它由 c 语言编写,效率更高,可以实现多进程加多线程。

  • 主动监控的优点是被监控端通常不需要额外安装其他软件,一切数据由监控端主动来获取。

  • 主动监控的缺点很明显,如果某些被监控端出现异常,获取不到数据或者数据获取延迟。那么监控端的轮询进程需要等待这些被监控数据获取超时或延迟,这样必然会阻塞轮询进程去获取其他数据,在轮询时间短或主机较多的情况下,可能出现在轮询周期已经结束,下一次轮询已经开始,而本次轮询还没有结束,造成某些没来得及获取。

(在大规模的监控体系中,一般使用 被动监控 ,客户端主动向监控机发送数据。 被动监控 一般需要在客户端安装监控代理程序,Nagios 和 Zabbix 可以实现被动监控,而 Cacti 只支持主动监控)

Cacti抓取数据方式

.——使用poller.php 抓取数据
        poller.php顾名思义,就是轮询器。它是cacti能够周期性获取数据原始驱动。poller.php是cacti获取数据的一个工具,这个工具是没有办法替代的,cacti必须使用poller.php才能正常工作。
         poller.php负责调用cmd.php或者spine。

可以这样认为,poller.php是最终汇总数据的,而cmd.php是获取数据的就行。poller.php发出获取数据的信号,告诉cmd.php 去获取数据,然后cmd.php就会调用那些定义好的数据收集方法去获取数据。

poller.php可以调用cmd.php, 但是由于cmd.php效率不高,最短执行周期是5分钟,因此cacti提供了一个更高效的工具spine来替代cmd.php,最短执行周期1分钟,可以极大的提高效率。

所以,无论是使用cmd.php,还是spine, 我们都必须设置 poller.php 的 cron 计划任务,让poller.php去驱动cmd.php或者spine工作。

spine是根据我们设定Poller Interval设置的值运行的,poller.php则是我们cron计划任务控制运行的,结果就是按照cron中定义的进行汇总。最好把Poller Interval 和 cron 定义的周期相同,否则可能出现误差,莫名其妙的问题

在crontab中添加定时任务 (每五分钟执行一次)
*/5 * * * * /usr/bin/php /var/www/html/cacti/poller.php>/dev/null

2.使用cmd.php 抓取数据

默认使用cmd.php 方式,可以在这里查看
Console -> Cacti Settings->Poller->Poller Type

3..配置spine轮询器来配置

安装配置 Cacti spine

需要使用以下组件

  • net-snmp-devel

    mysql

    mysql-devel

    openssl-devel

 

1.下载   
     wget http://www.cacti.net/downloads/spine/cacti-spine-1.0.1.tar.gz

2.解压

     tar -zxvf cacti-spine-1.0.1.tar.gz
3.安装
     检查环境
     ./configure
   
报错:
               configure:3520: error: C compiler cannot create executables
               error: unrecognized command line option '-V' xgcc: fatal error: no input files
    初步判断 是gcc版本太低(4.8.5),升级gcc5.1.0……
 继续报同样错 :
查找原因,查看config.log 日志

真正的错误并不在这里,而是在最后一个错误出现的地方
我遇到的错误是:   “collect2: ld returned 1 exit status”
因为缺少了动态库文件。

我这里缺少的是lssl,就是openssl的库文件。
使用命令yum install -y openssl-devel(前面没装的原因)
接着报错:
         configure: error: Cannot find MySQL headers.  Use --with-mysql= to specify non-default path.
少装mysql-devel扩展了

 yum install mysql-devel(前面没装的原因)
 
 
      make
           报错

In file included from sql.c:34:
common.h:133:38: error: net-snmp/net-snmp-config.h: No such file or directory
common.h:134:32: error: net-snmp/utilities.h: No such file or directory
common.h:135:40: error: net-snmp/net-snmp-includes.h: No such file or directory
common.h:136:33: error: net-snmp/config_api.h: No such file or directory
common.h:137:30: error: net-snmp/mib_api.h: No such file or directory
In file included from spine.h:505,
                 from sql.c:35:
snmp.h:41: error: expected ‘;’, ‘,’ or ‘)’ before ‘*’ token
make: *** [sql.o] Error 1

  • 报错提示:需安装net-snmp-devel解决依赖
    # yum -y install net-snmp-devel

    继续报错:

    # make

    false // No help2man // --output=spine.1 --name='Data Collector for Cacti' --no-info --version-option='--version' ./spine

    make: *** [spine.1] Error 1

     
    报错提示:需安装help2man解决

    #yum -y install help2man

    make install

    4.修改配置文件及数据库信息
    #cp  /usr/local/spine/etc/spine.conf.dist  /usr/local/spine/etc/spine.conf
    # vi /usr/local/spine/etc/spine.conf

    填写数据库信息,即Cacti数据库

    DB_Host         localhost
    DB_Database     cacti
    DB_User         root
    DB_Pass         cacti
    DB_Port         3306

    5.测试是否正常

    # /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选项手动指定配置文件路径)

    6.在cacti里设置spine路径
    Console -> Configuration -> Settings -> Paths -> Alternate Poller Path -> Spine Poller File Path

    /usr/local/spine/bin/spine

    7.修改Cacti使用的Poller Type

    Console -> Cacti Settings->Poller->Poller Type
    在下拉中选择spine

     
     
    轮询时间选为每分钟,其它参数可以适当增大些 

出错 :
全部完成后发现没有图形了,也没有数据,查看cacti的日志如下:

2017-02-16 14:33:01 - POLLER: Poller[1] ERROR: The path: /usr/local/spine/bin/spine  is invalid.  Can not continue

2017-02-16 14:34:01 - POLLER: Poller[1] ERROR: The path: /usr/local/spine/bin/spine  is invalid.  Can not continue

2017-02-16 14:35:01 - POLLER: Poller[1] ERROR: The path: /usr/local/spine/bin/spine  is invalid.  Can not continue

2017-02-16 14:36:02 - POLLER: Poller[1] ERROR: The path: /usr/local/spine/bin/spine  is invalid.  Can not continue

分析:
1.检查路径是否写错
2.spine 是否有可执行权限
3.在系统里单独运行下 spine 看是否有问题(一切正常,如下)
      [root@bogon cacti]# /usr/local/spine/bin/spine 
     SPINE: Using spine config file [/etc/spine.conf]
     SPINE: Version 1.0.1 starting
     SPINE: Time: 0.3066 s, Threads: 4, Devices: 5
4.最终原因:
      cacti是使用 poller.php 调用 spine的,这里问题是poller.php 无法调用spine(无法访问spine所在的目录)
将spine程序复制到 poller.php文件的同目录
         cp spine /var/www/html/cacti/spine
 
再将Console -> Configuration -> Settings -> Paths -> Alternate Poller Path -> Spine Poller File Path
改为/var/www/html/cacti/spine  即可
注意其配置文件也要移动  cp /usr/local/spine/etc/spine.conf /etc/  (否则报下面错误)
 
 
继续出错:
        没有任何图像产生,查看cacti日志
       POLLER: Poller[1] Maximum runtime of 58 seconds exceeded. Exiting.

刚开始分析是监控机器太多,线程无法在一分钟内扫描所有机器,在Poller设置里增加线程数
问题依旧……

仔细查看Settings -> Paths -> Alternate Poller Path  里的设置选项,上面我们将spine这个程序
cp spine /var/www/html/cacti/spine   放到/var里执行,所以程序找不到它的配置文件了!!!
解决:cp /usr/local/spine/etc/spine.conf /etc/
 
查看日志,正常工作

2017-02-16 14:55:03 - SYSTEM STATS: Time:1.5972 Method:spine Processes:2 Threads:4 Hosts:6                        HostsPerProcess:3 DataSources:10 RRDsProcessed:7
 

Cacti 抓取数据方式 安装spine的更多相关文章

  1. 爬虫学习笔记(1)-- 利用Python从网页抓取数据

    最近想从一个网站上下载资源,懒得一个个的点击下载了,想写一个爬虫把程序全部下载下来,在这里做一个简单的记录 Python的基础语法在这里就不多做叙述了,黑马程序员上有一个基础的视频教学,可以跟着学习一 ...

  2. 分布式爬虫:使用Scrapy抓取数据

    分布式爬虫:使用Scrapy抓取数据 Scrapy是Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘. ...

  3. NET 5 爬虫框架/抓取数据

    爬虫大家或多或少的都应该接触过的,爬虫有风险,抓数需谨慎.  爬虫有的是抓请求,有的是抓网页再解析 本着研究学习的目的,记录一下在 .NET Core 下抓取数据的实际案例.爬虫代码一般具有时效性,当 ...

  4. nodejs--实现跨域抓取数据

    最近公司安排给我一个任务,抓取页面数据:http://survey.finance.sina.com.cn/static/20205/20131120.html?pid=20205&dpc=1 ...

  5. 【转】蓝牙4.0BLE cc2540 usb-dongle的 SmartRF Packet Sniffer 抓取数据方法--不错

    原文网址:http://blog.csdn.net/mzy202/article/details/32408223 蓝牙4.0BLE cc2540 usb-dongle的 SmartRF Packet ...

  6. windows环境下nutch2.x 在eclipse中实现抓取数据存进mysql详细步骤

    nutch2.x 在eclipse中实现抓取数据存进mysql步骤 最近在研究nutch,花了几天时间,也遇到很多问题,最终结果还是成功了,在此记录,并给其他有兴趣的人提供参考,共同进步. 对nutc ...

  7. 测试开发Python培训:抓取新浪微博抓取数据-技术篇

    测试开发Python培训:抓取新浪微博抓取数据-技术篇   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在poptest的se ...

  8. C#抓取数据、正则表达式+线程池初步运用

    去年底用 多线程+HtmlAgilityPack.dll 写了一个抓取“慧聪网” 公司信息的小程序,代码惨不忍赌.好在能抓到数据,速度也能让人忍受就很久没管了. 最近这段时间把这个小程序发给同事看着玩 ...

  9. PHP Curl模拟登录并抓取数据

    使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据.具体实现的流程如下(个人总结): 1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息: ...

随机推荐

  1. cogs 1583. [POJ 3237] 树的维护 树链剖分套线段树

    1583. [POJ 3237] 树的维护 ★★★★   输入文件:maintaintree.in   输出文件:maintaintree.out   简单对比时间限制:5 s   内存限制:128 ...

  2. vue vuex开发中遇到的问题及解决小技巧

    1.在vue的开发中,如果使用了vuex,数据的组装,修改时在mutations中,页面是建议修改变量值的,如果强制修改,控制台就会出现错误.如下: 这种错误虽然不会影响结果,但是是vuex不提倡的方 ...

  3. DateTime.Now

    // 2008年4月24日 System.DateTime.Now.ToString( " D " );// 2008-4-24 System.DateTime.Now.ToStr ...

  4. cf 697C Lorenzo Von Matterhorn 思维

    题目链接:https://codeforces.com/problemset/problem/697/C 两种操作: 1是对树上u,v之间的所有边的权值加上w 2是查询树上u,v之间的边权和 树是满二 ...

  5. 假期续命充电——简单上手tesorflow2 框架

    谈到深度学习,就不得不谈到tensorflow 在tensorflow之后出了2.0版本,相比之前有了很大的改变,趁着假期赶紧冲冲冲! 稍微学习了一些基础,做一个自我总结,作为一些基础的知识不再过多重 ...

  6. 使用log4j把日志写到mysql数据库

    log4j可以支持将log输出到文件,数据库,甚至远程服务器,本教程以mysql数据库为例来讲解: 作者:Jesai 没有伞的孩子,只能光脚奔跑! 1.数据库设计 数据库表 表4-1日志表(log) ...

  7. java byte/short/char补充(了解)

    1.在数学运算中会自动提升数据类型为 int 2.在基本赋值中,若右册的常量不超过取值范围,javac 添加 强制转换,否则报错 3.若右册 含有 变量 而不是直接使用常量相加,编译报错 例子 pub ...

  8. 缓存读写策略 - Cache Aside.md

    场景描述 比如一条数据同时存在数据库.缓存,现在你要更新此数据,你会怎么更新? 先更新数据库?还是先更新缓存? 其实这两种方式都有问题. (1)先更新数据库,后更新缓存 这样会造成数据不一致. A 先 ...

  9. 查看jvm内存信息

    Runtime.getRuntime().maxMemory(); //最大可用内存,对应-Xmx Runtime.getRuntime().freeMemory(); //当前JVM空闲内存 Run ...

  10. Ubuntu16手动安装OpenStack——glance篇--转

    全文转自https://www.voidking.com/dev-ubuntu16-manual-openstack-glance/ 目标 紧接着<Ubuntu16手动安装OpenStack—— ...