zabbix性能优化实践

简介:

最 近在做数据平台这边的监控,因为之前一直在用zabbix,而且个人比较倾向于把数据放在数据库中(这一点nagios和cacti是没法和zabbix 比的),方便后面做进一步的分析和处理(容量规划等)。在架构上考虑到扩展性和性能问题,采用了master---proxy的结构,其中proxy使用 active的模式,这样可以减轻master端的压力。

谈几个遇到的问题:

1.首先,为了了解zabbix的性能情况,增加了zabbix相关的metric监控

(具体见:http://1662935.blog.51cto.com/1652935/1345664)


2. 监控添加问题,开发了添加监控的前端页面,使用zabbix api的方式来一键添加监控,完成链接模板,分配分组的操作。其中主机到模板的链接通过主机名的方式进行匹配,缺乏可维护性,因为现在cmdb不可用,和 同事讨论下来,准备自己在数据库里面维护一套信息(host--process,process--template),每天动态更新。


3.在一个proxy添加了200台机器后,开始遇到了断图的问题

比如下面这个:

142811742.png

通 过分析zabbix server 数据库中history的数据,发现有数据丢失的情况,interval 为60s,1小时应该有60条数据,但是在数据库中只有十几条,进而分析proxy 数据库中的items表,delay设置是没有问题的,排除config sync的问题,分析agent端的日志,发现在agent端就存在数据获取不完整的问题(agent使用了passive的模式),也就是说proxy busy造成了获取数据不完整,调整StartPollers后解决,这个值默认是5,在passive agent的模式下,远远不够用,建议改成hosts*1.5的值。


4.unreachable 问题

1) 接入机器后,出现大批的host unreachable的报警(agent.ping item),但是主机是可以通的,通过部署网络监测脚本,排除agent---proxy---master 3者间的网络连通问题。通过增大 StartPollersUnreachable和UnreachablePeriod解决。

2)报警问题,zabbix在 ok--->unknown状态时不会产生报警,因此unreachable的报警不能发现host item获取值的问题,可通过增加host update percent监控实现(具体见:http://1662935.blog.51cto.com/1652935/1345789)。


5.集群整体update percent很低

通过breakdown到host,发现部分host update percent导致(几台机器agent有问题,值状态为unknown)修复后,整体的update percent升高到98%左右。


6.proxy服务器load问题

一 个proxy接入350台左右的集群,nvps200左右,但是load比较高,因为agent是passive的模式,数据获取都是proxy负责的, 因此如果item比较多,proxy的压力就会比较大。考虑转换agent的模式为active,将压力分散到agent端,proxy只负责数据 sync和config sync,调整后,proxy压力减小了很多,具体见下图(没数据的地方是item没有调整为active导致)


142835755.png


同时解决了queue过多的问题,调整后,基本没有超过5分钟的delay了。


142902575.png


7.housekeeper的问题

master端和proxy端都存在这个问题(proxy不能disable housekeeper),master端可以通过disable 并partition db解决,因为需要停机维护,暂时还没做调整。


8.db partition 

http://caiguangguang.blog.51cto.com/1652935/1354093


通过上面的调整,zabbix基本没什么压力了(单proxy 350台),扩展性也不错,后面需要做benchmark test,看看能跑到多少nvps.



小结:做zabbix的性能调优之前,要做好zabbix性能的监控,调整中要考虑把压力分散,master分散至proxy,proxy分散至agent。

对zabbix的工作机制和各种process的作用要了解,对zabbix的数据库表结构也要有比较好的理解。


本文出自 “菜光光的博客” 博客,请务必保留此出处http://caiguangguang.blog.51cto.com/1652935/1346372




本文转自 Tenderrain 51CTO博客,原文链接:http://blog.51cto.com/tenderrain/1601447
相关文章
|
4月前
|
SQL 关系型数据库 MySQL
MySQL进阶之性能优化与调优技巧
MySQL进阶之性能优化与调优技巧
|
14天前
|
缓存 关系型数据库 MySQL
MySQL数据库性能优化实战
【4月更文挑战第30天】本文探讨了MySQL性能优化实战技巧,包括硬件与配置优化(如使用SSD、增加内存和调整配置参数)、索引优化(创建合适索引、使用复合索引及定期维护)、查询优化(避免全表扫描、减少JOIN和使用LIMIT)、分区与分片(表分区和数据库分片),以及使用缓存、定期清理数据库和监控诊断。通过这些方法,可以提升数据库性能和响应速度。
|
10月前
|
SQL 缓存 关系型数据库
简述MySQL可以从哪些方面做到性能优化
数据库设计优化:良好的数据库设计是性能优化的基础。包括选择适当的数据类型、建立正确的索引以及合理划分表等。通过优化数据库结构,可以减少磁盘空间的占用和提高查询效率。
77 0
|
10月前
|
存储 监控 关系型数据库
MySQL数据库查询性能优化的技巧和经验分享
MySQL数据库查询性能优化的技巧和经验分享
|
消息中间件 缓存 弹性计算
|
存储 缓存 Prometheus
ELK 性能优化实战
ELK 性能优化实战
|
关系型数据库 MySQL 测试技术
增补mysql的性能优化数条经验
增补mysql的性能优化数条经验
115 0
|
Linux 网络安全
|
缓存 监控 关系型数据库
Zabbix 性能优化(学习笔记十八)
1、性能调优思路 .    不要使用默认的模板,应该自己定制模板 .    数据库调优 .    架构优化,如果使用分布式,各服务器功能独立 .    Items、trigger调优 .
999 0
|
监控 数据库 Shell

推荐镜像

更多