cacti性能优化笔记(面向大规模集群的监控管理)
来源:互联网 发布:淘宝司法拍卖车辆 编辑:程序博客网 时间:2024/05/01 06:44
目标:
单台Cacti服务器,同时监控1000+ Server,50000+ RRD 文件. 保证图表数据的连续和流畅,每一轮数据采集时间控制在3分钟之内。
硬件环境:
Intel(R) Xeon(R) CPU E5420 @ 2.50GHz 4 cores
4G memory
normal sata disk
优化步骤:
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 [url]http://www.cacti.net/downloads/spine/cacti-spine-0.8.7e.tar.gz[/url]
tar zxvf cacti-spine-0.8.7e.tar.gz
cd cacti-spine-0.8.7e
wget [url]http://www.cacti.net/downloads/spine/patches/snmp_v3_fix.patch[/url]
wget [url]http://www.cacti.net/downloads/spine/patches/mysql_client_reconnect.patch[/url]
wget [url]http://www.cacti.net/downloads/spine/patches/ping_reliability.patch[/url]
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的MaximumThreads per Process, Number of PHP Script Servers, Script and ScriptServer 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等客户端,提供数据采集的可靠性。
原文:[url=http://zys.8800.org/index.php/archives/391]http://zys.8800.org/index.php/archives/391[/url]
- cacti性能优化笔记(面向大规模集群的监控管理)
- 几个优化 Cacti 监控服务性能的技巧
- linux学习之集群的cacti监控
- [Cacti] cacti监控mongodb性能实战
- Puppet-大规模集群部署管理的神器
- Google的大规模集群管理系统Borg
- 性能监控程序cacti的安装(mysql+apache+php)
- Elasticsearch集群管理、优化以及监控
- cacti监控的搭建
- Cacti的服务器监控
- cacti监控的搭建
- Cacti的优化
- cacti监控squid的方法
- Cacti监控apache的方法
- Cacti监控tomcat的方法
- 用Ganglia监控集群的性能
- 用Ganglia监控集群的性能
- Linux操作系统高性能集群监控管理之
- 广州技术沙龙第 3 期活动总结
- 操作符重载
- 写在感恩节
- 7种html加密方式介绍
- SQLServer 游标简介与使用说明
- cacti性能优化笔记(面向大规模集群的监控管理)
- 解析LOGFONT
- HTML本地化测试工具HTMLQA
- 初次来到这里
- 浅谈HTTP协议(二)--返回值
- 浅谈SOA (转)
- DFM文件与标准文本文件转换
- 浅淡HTTP协议三--断点续传
- VBIRD BASIC 2