大话zabbix 3.0设计假设

What’s new in Zabbix 2.0?

去年开始使用Zabbix的时候,是1.8.X的版本,今年Zabbix已经跨入了2.0的时代。看了2.0的release notes,和performance相关的有下面几个:

  1.          :: Performance improvements::Trigger related data is cached to reduce number of database requests, it improves overall performance of Zabbix Server.
  2.          :: Much faster processing of escalations::Processing of escalations has been improved to work more efficiently.

其他都是些enhancement,比如增加vm.memory.size的自带监控项,新的login界面,支持jmx,导出csv等等,觉得没啥意义。底层的设计已经不会做改动了。

 

感觉Zabbix目前更关注易用性(比如界面)而不是性能方面的问题。因为也许大规模使用Zabbix的公司只有10%,解决这些large scalability的问题需要很多的时间和精力。大概Zabbix本身就不是为了这个方向而做的。

下面谈谈Zabbix底层的一些问题和想法。

 

Zabbix 3.0 by me?

在使用过程中,发现有很多问题,其中解决了几个performance方面的问题。但还有很多问题是没有解决的,主要原因是现在运行的比较稳定,如果patch代码,需要改代码,测试等。有风险,有些太底层的问题,也许需要几个月的时间来解决,没这个时间和精力。

最近在想,如果我来设计Zabbix 3.0,我会做怎样的修改?下面说说想到的东西:

  1. 砍掉乱七八糟的功能,做纯粹的监控系统,收集数据,数据展现,报警。
  2. 改进Proxy和Server之间的网络传输性能。我们有一台电信的Proxy,Server在网通,有时会莫名其妙突然这台Proxy监控的机 器全部停止更新数据。而此时日志完全正常,网络情况也非常好(30ms,0%丢包)。机器配置和其他Proxy一致,唯一的区别就是网络,难道 Zabbix对于网络的要求这么苛刻?看来是老美不了解我们水深火热的网络情况啊。
  3. API性能问题。Zabbix的API是基于PHP的。无论你是用Apache(最早我们用的),还是Nginx+php-fpm(现在我们用 的),在高并发的情况下都有性能问题。目前除了调优参数,就是定时重启php了。这个非常麻烦,有时其他程序过来的API连接,就因为重启而被关闭了。现 在解决方法是每个程序自己弄个pool来做连接池(本来想在php之前做一层pool的,但改动较大,放弃了)。
  4. 降低数据库敏感性。在比较清楚Zabbix表结构后,很多操作都是通过直接update数据库完成的。最近在update proxy_hostid(调整Proxy监控的机器)时,Server会出现crash。我直接update数据库而不是使用API就是因为之前说到的 API在高并发的情况下的问题。这是因为Zabbix会将一些信息缓存到内存中,如果发现不匹配或者说冲突,Server就会crash。我联想到另一个 问题,在1.8.X的时候,Zabbix有个奇怪的限制,就是duplicate hosts问题。它是指在Zabbix中有两台host,hostname相同,那么Server就会crash。但我发现,有时明明没有相同 hostname的host,也会crash。原来,Zabbix会将host列表读入内存,如果一台机器,你删了,再马上加,内存中的缓存还在,那么 Zabbix就会认为是duplicate host,从而crash。这两个问题总结到一起来说,就是Zabbix对数据库太敏感。细小的变动会有大问题。
  5. 简化数据库表结构,提高SQL执行效率。这个和1.有关,干掉乱七八糟的功能,简化数据库表结构;Zabbix拼SQL会弄出非常恶心的SQL, 直接让数据库lock半天。之前一直诟病Zabbix奇怪恶心的表结构,最近在看《企业应用架构模式》,发现其中的一些设计并不是不无道理的。这点关于数 据库的想法,需要以后再检验。
  6. 提升前端易用性和fix bug。Zabbix的前端有个很奇怪的地方,比如我打开两个页面,在看不同分组的hosts,记为Group A,Group B。我先打开Group A的页面,再打开Group B的页面。然后在Group A这里更新一些东西,按道理跳到别的界面更新完后,会跳回Group A的界面。真实情况是,会跳到Group B的界面。还有莫名其妙的bug,比如Administrator-User那里没法添加用户等。(这些问题估计Zabbix在新版本中已经解决了)。
  7. 增强安全性,比如zabbix_get权限控制,不单单要写在agent的配置文件中,需要更严格的安全验证。

就想到这么多了,如果有其他想到的,以后再补充。

转自八牛的博客

你可能感兴趣的:(大话zabbix 3.0设计假设)