CW-Zabbix

CW-Zabbix是一个Zabbix的二次开发项目,它目前基于Zabbix 5.0.4版本,使得Zabbix支持向Clickhouse写入指标数据。Zabbix在运行中产生的主要数据基本上可以分为history数据和trend数据。

其中,trend数据是根据history计算出的各种中间值,如平均值,最高值等。而history就是zabbix搜集到的各种指标的实时历史数据,我们的目标就是把这些时序数据导入到clickhouse中,使其速度提高一百倍。

核心特性

性能提升100倍
使用 ClickHouse 作为历史存储引擎,比其他存储引擎更高效、快速。在相同硬件上使用 ClickHouse 可节省 20-50 倍的 CPU 时间、磁盘操作和磁盘大小。
无需过多配置
编译、部署过程与官方步骤相同,可参考Zabbix官方文档(v5.0.4)使用,对接Clickhouse数据库仅需要修改部分配置文件即可。
Web响应更快
Zabbix在监控项过多的场景下,页面响应缓慢。CW-Zabbix优化了请求处理,支持并发场景。

性能测试对比

在写入数据时,ZabbixServer与CW-ZabbixServer对系统开销情况:

并发数据组
200000
900000
对照组
Zabbix
CW-Zabbix
Zabbix
CW-Zabbix
CPU Use 2.17% 1.97% 2.17% 1.97%
CPU 利用率 8.51% 7.32% 7.83% 6.79%
CPU Load(1/5/15) 0.97/0.69/0.62 0.80/0.65/0.58 1.22/0.81/0.62 1.04/0.92/0.73
内存使用率 7.67% 4.93% 8.97% 5.61%

通过数据对比。在数据并发为200000、900000时,CW-Zabbix的Mysql、ClickHouseServer服务器系统CPU、内存占用较高,但IO请求平均大小、请求队列长度和磁盘写入速度均大于Zabbix。从CW-ZabbixServer和ZabbixServer服务器系统资源消耗情况可得出,CW-ZabbixServer在处理数据时,系统开销总体小于ZabbixServer系统开销,CPU利用率与内存利用率有所降低。

使用Jmeter请求ZabbixAPI,记录API响应时间与并发量。对照组中History表数据量均>=300w条,测试时分别查询数据量为50w,100w,200w进行20次以上的请求,取平均响应情况与系统资源消耗。

请求数据量
50w
100w
200w
对照组
Zabbix
CW-Zabbix
Zabbix
CW-Zabbix
Zabbix
CW-Zabbix
平均响应时间ms 4637 1541 11296 3057 26145 12561
吞吐量 次/min 25.2 72 10.3 37.1 2.3 4.7
异常 % 0.0% 0.0% 2.65% 0.0% 50.0% 0.0%

根据统计数据得出,首先,CW-Zabbix在查询数据量为50w,100w,200w时,保证了API的正常响应,而Zabbix在查询数据量大于100w条时,出现请求超时异常的情况。其次,CW-Zabbix在接口响应速度上表现优异,进过进一步分析测试,当查询量在100w时(仅当前测试环境下),Zabbix中Mysql查询时间约为3.25s,Clickhouse查询消耗时间为0.021s。