CW-Zabbix是一个Zabbix的二次开发项目,它目前基于Zabbix 5.0.4版本,使得Zabbix支持向Clickhouse写入指标数据。Zabbix在运行中产生的主要数据基本上可以分为history数据和trend数据。
其中,trend数据是根据history计算出的各种中间值,如平均值,最高值等。而history就是zabbix搜集到的各种指标的实时历史数据,我们的目标就是把这些时序数据导入到clickhouse中,使其速度提高一百倍。
查看完整报告
在写入数据时,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。