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

[经验分享] 优化CACTI-Sparehot

[复制链接]

尚未签到

发表于 2019-1-11 13:35:25 | 显示全部楼层 |阅读模式
  1,优化数据库schema,建立合理的索引  cacti默认的cacti.sql建立的数据库模型,竟然一个Index都没有建。每次执行poller.php的时候,主要的时间,都花费在数据库查询上。使用下面的sql语句,建立一系列索引,弥补默认的cacti.sql中缺乏index的缺点。可以有效的提高poller.php执行的效率,缩短更新RRD文件所需的时间
  CREATE INDEX `data_template_data_id` ON `data_input_data` (`data_template_data_id`);
  CREATE INDEX `host_id_snmp_query_id_snmp_index` ON data_local (`host_id`,`snmp_query_id`,`snmp_index`);
  CREATE INDEX `local_data_id_data_source_name` ON data_template_rrd (`local_data_id`,`data_source_name`);
  CREATE INDEX `graph_template_id_local_graph_id` ON graph_templates_item (`graph_template_id`,`local_graph_id`);
  CREATE INDEX `local_graph_template_item_id` ON graph_templates_item (`local_graph_template_item_id`);
  CREATE INDEX `host_id_snmp_query_id_snmp_index` ON host_snmp_cache (`host_id`,`snmp_query_id`,`snmp_index`);
  CREATE INDEX `local_data_id_rrd_path` ON poller_item (`local_data_id`,`rrd_path`);
  CREATE INDEX `host_id_rrd_next_step` ON poller_item (`host_id`,`rrd_next_step`);
  CREATE INDEX host_id_snmp_query_id ON host_snmp_cache (host_id,snmp_query_id);
  CREATE INDEX host_id_snmp_port ON poller_item (host_id,snmp_port);
  CREATE INDEX data_source_path ON data_template_data (data_source_path);
  2,使用spine替代默认的cmd.php来采集数据
  wget http://www.cacti.net/downloads/spine/cacti-spine-0.8.7e.tar.gz
  tar zxvf cacti-spine-0.8.7e.tar.gz
  cd cacti-spine-0.8.7e
  wget http://www.cacti.net/downloads/spine/patches/snmp_v3_fix.patch
  wget http://www.cacti.net/downloads/spine/patches/mysql_client_reconnect.patch
  wget http://www.cacti.net/downloads/spine/patches/ping_reliability.patch
  patch -p1 -N < snmp_v3_fix.patch
  patch -p1 -N < mysql_client_reconnect.patch
  patch -p1 -N < ping_reliability.patch
  ./configure –prefix=cacti_install_dir
  make
  make install
  然后编辑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等客户端,提供数据采集的可靠性。


运维网声明 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-662097-1-1.html 上篇帖子: 轻松架设时时监控工具Cacti 下篇帖子: ntop和Cacti
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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