• Cacti 抓取数据方式 安装spine


    安装好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

      安装配置 Cacti 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
     
  • 相关阅读:
    Tomcat报错:The valid characters are defined in RFC 7230 and RFC 3986
    MySQL 大数据量表最优分页方法
    Tomcat、Nginx/Openresty 隐藏版本号,使用nginx来统一显示错误页面
    理解领域驱动设计
    Windows+.NetCore+git+IIS在Jenkins上的自动化部署入门
    Oracle 函数wmsys.wm_concat中文乱码解决
    Springboot 在Filter 中通过@Autowired注入Bean,打包war部署为空值解决
    Java线程处理Future
    springboot打包war部署到weblogic,涉及Filter以及Filter中的@Value处理
    解决mybatisplus分页查询不起作用
  • 原文地址:https://www.cnblogs.com/centos2017/p/7896741.html
Copyright © 2020-2023  润新知