Cacti的优化技巧
创始人
2024-07-24 06:21:45
0

  Cacti优化

  1,优化数据库schema,建立合理的索引

  cacti默认的cacti.sql建立的数据库模型,竟然一个Index都没有建。每次执行poller.php的时候,主要的时间,都花费在数据库查询上。使用下面的sql语句,建立一系列索引,弥补默认的cacti.sql中缺乏index的缺点。可以有效的提高poller.php执行的效率,缩短更新RRD文件所需的时间

  1.   CREATE INDEX `data_template_data_id` ON `data_input_data` (`data_template_data_id`);  
  2.  
  3.   CREATE INDEX `host_id_snmp_query_id_snmp_index` ON data_local (`host_id`,`snmp_query_id`,`snmp_index`);  
  4.  
  5.   CREATE INDEX `local_data_id_data_source_name` ON data_template_rrd (`local_data_id`,`data_source_name`);  
  6.  
  7.   CREATE INDEX `graph_template_id_local_graph_id` ON graph_templates_item (`graph_template_id`,`local_graph_id`);  
  8.  
  9.   CREATE INDEX `local_graph_template_item_id` ON graph_templates_item (`local_graph_template_item_id`);  
  10.  
  11.   CREATE INDEX `host_id_snmp_query_id_snmp_index` ON host_snmp_cache (`host_id`,`snmp_query_id`,`snmp_index`);  
  12.  
  13.   CREATE INDEX `local_data_id_rrd_path` ON poller_item (`local_data_id`,`rrd_path`);  
  14.  
  15.   CREATE INDEX `host_id_rrd_next_step` ON poller_item (`host_id`,`rrd_next_step`);  
  16.  
  17.   CREATE INDEX host_id_snmp_query_id ON host_snmp_cache (host_id,snmp_query_id);  
  18.  
  19.   CREATE INDEX host_id_snmp_port ON poller_item (host_id,snmp_port);  
  20.  
  21.   CREATE INDEX data_source_path ON data_template_data (data_source_path);  
  22.  

  2,使用spine替代默认的cmd.php来采集数据

  1.   wget http://www.cacti.net/downloads/spine/cacti-spine-0.8.7e.tar.gz  
  2.  
  3.   tar zxvf cacti-spine-0.8.7e.tar.gz  
  4.  
  5.   cd cacti-spine-0.8.7e  
  6.  
  7.   wget http://www.cacti.net/downloads/spine/patches/snmp_v3_fix.patch  
  8.  
  9.   wget http://www.cacti.net/downloads/s ... ent_reconnect.patch  
  10.  
  11.   wget http://www.cacti.net/downloads/s ... g_reliability.patch  
  12.  
  13.   patch -p1 -N < snmp_v3_fix.patch 
  14.  
  15.   patch -p1 -N < mysql_client_reconnect.patch 
  16.  
  17.   patch -p1 -N < ping_reliability.patch 
  18.  
  19.   ./configure –prefix=cacti_install_dir 
  20.  
  21.   make  
  22.  
  23.   make install  
  24.  

  然后编辑cacti_install_dir/etc/spine.conf

  修改DB_HOST DB_DATABASE DB_USER DB_PASSWORD几个参数

  最后,在cacti的setting->poller页面里,将poller type设置成spine,同时设置spine的Maximum Threads per Process, Number of PHP Script Servers, Script and Script Server Timeout Value几个参数。

  通常会把Maximum Threads per Process设置成cpu * 2。在这里,我们设置成8.

  3, 重构rra文件的目录结构,为每个device建立单独的rra目录

  首先在crontab里禁用poller.php,然后执行cacti_install_dir/cli目录下的 structure_rra_paths.php,它会将所有的RRD文件按照device重新分配目录,并修改数据库中的RRD路径,成功执行后,再恢复poller.php的crontab就可以了。

  按照上面3个步骤,710台服务器,24000个RRD文件,完成一次poller.php的时间,缩短到50 seconds。实现了最初的目的。

  TODO:

  在执行poller.php的时候, 监控服务器的load达到了3,通过vmstat查看,显示负载主要在I/O。在目前的情况,如果再出现瓶颈,可以考虑安装Boost插件来进一步提供性能。

  cacti主要通过snmp来采集数据,可以引入collected等客户端,提供数据采集的可靠性。

【编辑推荐】

怎样备份Cacti的数据

Cacti取不到远程主机的数据

Cacti取不到CPU和内存的数据

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...