ValueCache以哈希表形式存储每个监控项的热数据,这些数据主要用于触发器表达式的计算,从而,监控项数量的增长基本不会影响触发器表达式计算所消耗的时间。趋势缓存中存储的是每个监控项**近自然小时内的累计趋势数据,这些数据的更新和写库均需要经历查找的过程,因为数据的更新和写库都是由***到来的监控数据驱动的,需要根据到来的监控数据查找对应的监控项数据。除了需要解决快速查找问题,Zabbix还需要解决快速排序问题,这一问题源于historysyncer进程处理监控数据时应该按照什么样的顺序进行处理,Zabbix是以监控项为单位对所有监控数据按照时间戳从小到大进行全局性的排序,所使用的排序方法就是堆排序,当需要选择目标时,只需要访问根节点即可。在使用堆排序的情形下,每次排序所消耗的时间与堆的规模直接相关。所以我们应该尽可能降低历史缓存中的监控项的数量,以加快数据处理速度。在压力较小的Zabbix系统中,历史缓存中的数据总是接近于0。上述哈希表结构的设计体现了监控数据的**性,正是由于**性,每次查找数据只需要访问单个目标。而堆排序的设计则体现了监控数据在时间维度的先后次序。Zabbix 与 Prometheus 到底该如何选择?信息zabbix大概多少钱
从统计意义上说,每次接受连接的时候,对于每个trapper进程来说都有相同的概率获得连接,***的结果就是所有连接在所有trapper进程之间均衡分配。如果考虑每个连接中包含的数据量不均衡,那么当某个trapper进程接受的某个连接包含较多的数据时,意味着该进程需要花更多的时间来读取和处理数据,这就意味着下一次接受连接的时间被推迟。对于poller进程,道理也是一样,每个poller进程都以相同的概率从Zabbixserver端的配置缓存接收到任务,从而实现数据分配均衡。预处理进程的工作模式与trapper进程不同,预处理进程采用manager-worker模式,即manager进程是***的数据入口,负责从trapper和poller接收所有数据,然后通过unix域套接字将数据分配给各个worker进程处理。其分配的规则是,每次每个worker只分配一个数据,只有当worker完成前一个任务之后才会分配下一个任务。***,historysyncer进程之间的数据均衡也是遵循机会均等的机制。其主要特点是,每个循环**多处理1000个监控值,所以每次写数据库的监控值也不会超过1000个。我们会发现,总体的数据处理过程都基于监控数据之间的**性,从而可以灵活地在各个进程之间调度。信息zabbix大概多少钱Zabbix集群是如何工作的?
既然进程之间是流水线式的协作,我们看一下监控数据在三类进程之间如何进行输入和输出。首先,Trapper和poller进程接收到的数据按照来源分为两种,一种是来自proxy端,一种是来自agent端。由于来自proxy端的数据已经由proxy完成了预处理,所以,这部分数据会直接输出到共享内存,供historysyncer进程使用。对于来自agent端的数据,无论其监控项是否设置了预处理步骤,都会通过unix域套接字传递给预处理进程。预处理进程接收到数据以后,如果发现该数据并没有设置预处理步骤,则直接写入共享内存,供historysyncer进程使用;如果发现需要预处理,则在预处理完毕以后再写入共享内存,供historysyncer进程使用。对于historysyncer进程来说,其输入数据来自共享内存,它会批量地从共享内存读取数据进行处理,具体处理过程是先写入数据库,然后计算触发器表达式生成event。
Zabbix通过很大程度地减少写锁持有时间,并将持有时间碎片化,从而降低了写锁对Zabbix进程并行性能的影响。我们注意到configuration syncer进程是***的,并未采用多进程方式,这一方面是因为元数据内部需要维持某些一致性,如果使用多进程方式,无疑会增加维持一致性方面的开销,另一方面,如果采用多进程,这些进程之间仍然需要解决锁***的问题,**终的结果与单进程并无多大区别。不过,如果能够基于元数据之间的**性,实现基于数据分组的并行化,那就另当别论。在所有Zabbix Agent配置文件中的Server和ServerActive参数中列出Zabbix Server集群节点信息;
监控数据的逻辑视角:监控数据首先特点是具有相互独立性。在不同的数据处理阶段,这种**性会体现在不同的层面,在数据采集阶段会体现在value层面,如果不考虑日志监控的话,同一监控项的多次数据采集之间不会互相影响,相当于是无状态的。在数据传输阶段,也就是从agent发送数据到server接收数据的阶段,**性体现在host层面,不同的host使用不同的地址和接口进行数据传输,互不影响,而在同一个host内部,每次传输的数据往往包含多个监控项的值。Zabbix前端的高可用性如何?信息zabbix大概多少钱
Prometheus和Zabbix有什么区别?信息zabbix大概多少钱
Zabbix对数据的处理能力集中体现在Zabbixserver端。总体上,Zabbixserver采用流水线式的多进程架构来处理监控数据,其中比较关键的有3类进程,每一类又可以启动多个进程。这3类进程分别是:trapper/poller进程,负责接收监控数据;预处理进程,负责对接收的监控数据进行预处理;historysyncer进程负责将监控数据写入数据库以及计算触发器表达式并生成event。这3类进程之间可以通过共享内存和Unix域套接字实现进程间通信。这里没有展开讲lld进程,是因为lld进程处理的是底层自动发现的数据,并不是严格意义上的监控值。信息zabbix大概多少钱
上海观纵科技有限公司主要经营范围是传媒、广电,拥有一支专业技术团队和良好的市场口碑。公司自成立以来,以质量为发展,让匠心弥散在每个细节,公司旗下webfunny前端监控,webfunny前端埋点,全链路应用性能监控,Argus-IT运维监控深受客户的喜爱。公司将不断增强企业重点竞争力,努力学习行业知识,遵守行业规范,植根于传媒、广电行业的发展。在社会各界的鼎力支持下,持续创新,不断铸造高质量服务体验,为客户成功提供坚实有力的支持。