Zabbix服务端进程被分为不同的种类,每一种进程负责相应的任务,包括收集原始监控数据、对原始监控数据进行预处理、将预处理后的监控数据同步到数据库、对监控数据进行计算以生
Blog:自由互联 个人
参考:《深入理解Zabbix监控系统》、《Zabbix用户手册》
Zabbix服务端进程被分为不同的种类,每一种进程负责相应的任务,包括收集原始监控数据、对原始监控数据进行预处理、将预处理后的监控数据同步到数据库、对监控数据进行计算以生成事件、计算和获取内部监控数据,以及对数据库中的数据进行清理等。
监控数据的收集进程Zabbix服务器的重要任务之一就是被动接收由Zabbix代理和各种Zabbix客户端发送的监控数据,以及主动向Zabbix代理、Zabbix java gateway和Zabbix客户端等数据源请求数据,其中被动接收数据由trapper类进程实现,主动请求数据则由poller类进程实现。
trapper类进程通过监听TCP套接字来捕获符合通信协议的原始监控数据,poller类进程则使用ConfigCache
作为输入,根据缓存信息实现完善的任务调度。trapper类和poller类进程的下游是预处理进程,这两类进程需要将收集到的原始监控数据发送到预处理进程。trapper类进程和poller类进程都会在进程内部维护一个静态变量cached_message
,用于暂存待发送的监控数据,并在各种必要的时机将该变量中的消息发送到预处理进程。
Zabbix服务器端的trapper进程负责接收来自Zabbix客户端、Zabbix代理、zabbix_sender及其他外部进程发来的请求并进行处理,按照Zabbix 5.0的通信协议规范,trapper进程只能接收JSON格式字符串的请求。
trapper进程由配置文件中的StartTrappers
参数决定其启动数量(允许启动0~1000个进程,默认为5个)。
[root@prod-zabbix-server ~]# ps -ef|grep trapper
zabbix 8740 8643 0 Feb21 ? 01:55:26 /usr/sbin/zabbix_server: trapper #1 [processed data in 0.001288 sec, waiting for connection]
zabbix 8741 8643 0 Feb21 ? 01:13:24 /usr/sbin/zabbix_server: trapper #2 [processed data in 0.000863 sec, waiting for connection]
zabbix 8742 8643 0 Feb21 ? 01:02:48 /usr/sbin/zabbix_server: trapper #3 [processed data in 0.000664 sec, waiting for connection]
zabbix 8743 8643 0 Feb21 ? 01:55:36 /usr/sbin/zabbix_server: trapper #4 [processed data in 0.000788 sec, waiting for connection]
zabbix 8744 8643 0 Feb21 ? 01:43:59 /usr/sbin/zabbix_server: trapper #5 [processed data in 0.000802 sec, waiting for connection]