zabbix_server所具有流程
2017-02-15 14:57:10 48 举报
zabbix_server源码解析
作者其他创作
大纲/内容
discoverer_thread
selfmon_thread
MAIN函数
proxypoller_thread
按进程类型收集系统本身的每个轮询进程的运行情况。主要函数:void\t collect_selfmon_stats(void)
watchdog_thread
初始化
这个进程最主要的功能就是定时的调用计算数据库中定义的触发器的值,如果新值和原有的值不相等,表示有新的事件产生,然后就将新的事件插入到数据库,关键函数:process_time_functions, evaluate_expressions(用于计算触发器表达式的值&产生事件),process_trigger_events(处理事件,主要是将新事件插入数据库)
读取配置文件及接受命令行
snmptrapper_thread
pinger_thread
用于主动连接代理,并且获取代理上接收的history等数据。一开始执行process_proxy()函数。
escalator_thread
每隔一段时间执行process_discovery(now)。根据配置的发现规则获取IP地址并判断是否可用,获取主机名,访问数据库填充dcheck结构,根据发现规则drule 和dcheck结构体执行discover_service()函数,依据dcheck-type发现不同的主机。如case SVC_SSH: service = \"ssh\";
trapper_thread
alerter_thread
dbconfig_thread
snmptrap相关的轮询处理进程,读取trapfile,解析关键字,通过关键字获取接口数组、主机列表、item列表,根据item列表获取agent_result 并同步历史表。
描述zabbix_server端源代码主要实现功能
poller_thread
for (i = 0; i threads_num; i++) pid = zbx_child_fork() 创建子进程,每创建一个执行一个轮询,并进行进程名和进程类型设置
dbsyncer_thread
escalator是将触发器事件和所需执行的动作联系起来的一个表,这个相应动作可以是重复执行的,动作有两个选择:发送邮件和执行远程shell命令。调用函数顺序:process_escalations-escalation_execute-escalation_execute_operations,在escalation_execute_operations中可以看到,它其实就是在alert表中插入一条记录,上面我们提到有个main_alerter_loop会周期性的处理这个表中数据
1,MAIN_ZABBIX_ENTRY()主函数入口地址,主要完成配置,初始化,重要轮询。2,其中三个重要的初始化函数: \tinit_database_cache(); //初始化历史表\tinit_configuration_cache(); //初始化主机表\tinit_selfmon_collector(); //初始化collector表
轮询
timer_thread
housekeeper_thread
httppoller_thread
0 条评论
下一页