zabbix源码阅读——zabbix_server

原创 2012年09月06日 12:50:22

现在简单的描述一下zabbix_server端的各个进程及其功能

1.main_dbconfig_loop:这是一个同步数据库的hosts表和items表的内容到内存的进程,时间间隔默认为1s,由于这两个表用的很频繁,出于性能考虑,在内存上用哈希表的形式缓存了这两个表的信息

2.main_watchdog_loop:用来检查database有没有挂掉,时间间隔默认60s,如果挂了需要向管理员报警,检查的方式为每隔60s重连一次数据库,没有报错表明运行正常

3.main_poller_loop:调用get_values会主动连接zabbix_agent然后发送请求然后获取zabbix_agent响应的数据,在get_values中调用dc_add_history函数将获取的数据存放到history表的内存缓存中,并且要更新item的状态(normal、unreachable),

4.main_trapper_loop:从监听端口接收数据并调用process_trapper_child进行处理:

if (0 == strncmp(s, "ZBX_GET_ACTIVE_CHECKS", 21))	/* Request for list of active checks */  //与上一篇讲的agent有个更新active_list的进程对应
	{
		ret = send_list_of_active_checks(sock, s);
	}
	else if (strncmp(s, "ZBX_GET_HISTORY_LAST_ID", 23) == 0) /* Request for last ids */
	{
		send_history_last_id(sock, s);
		return ret;
	}
	else	/* Process information sent by zabbix_sender */
	{...}
5.main_pinger_loop:周期性针对每个item上的ip进行ping操作,周期是算出来的,具体怎么算的还没研究

6main_alerter_loop: 每隔30s将alerts表中的未发送的警报都发送出去,并且发送成功后将ALERT_STATUS_NOT_SENT改为ALERT_STATUS_SENT

7.main_housekeeper_loop:定时对数据库中一些过期的数据进行清理删除

for (;;)
	{
		now = time(NULL);
		DBconnect(ZBX_DB_CONNECT_NORMAL);

		d = housekeeping_history_and_trends(now); //清除数据库historys和trends表中过期的数据
		housekeeping_process_log(now);            //对housekeeper表中的过时数据进行清理

		housekeeping_events(now);                 //清理acknowledges和events中的数据

		housekeeping_alerts(now);                 //清理alerts中的数据

		housekeeping_sessions(now);               //清理sessions中的数据

		DBclose();

		zbx_sleep_loop(CONFIG_HOUSEKEEPING_FREQUENCY * SEC_PER_HOUR);
	}
8.main_timer_loop:这个进程最主要的功能就是定时的调用计算数据库中定义的触发器的值,如果新值和原有的值不相等,表示有新的事件产生,然后就将新的事件插入到数据库,关键函数:process_time_functions, evaluate_expressions(用于计算触发器表达式的值&产生事件),process_event(处理事件,主要是将新事件插入数据库)

9.main_nodewatcher_loop:这个进程跟zabbix实现的分布式部署有关系,最主要的函数是main_historysender,当这个进程运行在slave节点上时会周期性的将history数据(zabbix_agent收集到的监控数据)发送给master节点

10.main_httppoller_loop:周期性的检测httptest表中定义的http服务是否运行正常,代码中使用调用libcurl库实现的

11.main_discoverer_loop:它会扫描定义ip地址范围内的ip,如果发现有zabbix_agent存在则会将它加入hosts表中

12.main_dbsyncer_loop:负责将内存中的history数据(zabbix_agent发送的监控数据)同步到数据库中

13.main_escalator_loop:escalator是将触发器事件和所需执行的动作联系起来的一个表,这个相应动作可以是重复执行的,动作有两个选择:发送邮件和执行远程shell命令

调用函数顺序:process_escalations=》execute_escalation=》execute_operations,在execute_operations中可以看到,它其实就是在alert表中插入一条记录,上面我们提到有个main_alerter_loop会周期性的处理这个表中数据

14.main_proxypoller_loop:用于主动连接代理,并且获取代理上接收的history数据

15.main_selfmon_loop:用于收集收集系统本身的各个进程的运行情况如用掉的cpu时间


转载请注明出处:http://blog.csdn.net/liujian0616/article/details/7946492

相关文章推荐

zabbix源码学习之维护状态实现maintenance

zabbix作为开源监控平台,其强大是业界公认的。如果想了解zabbix具体功能及使用方法,可以参考链接: zabbix从入门从精通 官方说明文档(什么,打不开?多刷几次 :) )言归正传,下面就...

zabbix源码阅读——zabbix_server

转载自:http://blog.csdn.net/liujian0616/article/details/7946492 现在简单的描述一下zabbix_server端的各个进程及其功能 1....

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

zabbix源代码阅读--zabbix_agent

zabbix是一个实时监控系统,可以监控服务器的运行状态(cpu,内存,端口),并且可以发送报警邮件和短信,或者执行远程命令.由于工作上需要对zabbix进行二次开发,所以借此机会阅读了一下zabbi...

zabbix3.0 源码安装server端详细过程

安装文档地址:https://www.zabbix.com/documentation/3.0/下载地址:http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64...
  • mchdba
  • mchdba
  • 2016年04月27日 19:48
  • 21628

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

PNG文件结构最简单解析(生成)

PNG文件结构最简单解析(生成)前言 本想写个从.wdf提前资源的生成位图的程序,无奈.bmp没有A(透明色),.gif编码复杂,所以选择.png作为理想的图片格式,饶了许多弯路,发出来与各位分享...

C#控制台基础 输出枚举类型的数值和名称

镇场诗:慈心积善融学习,技术誓为大家学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。 ——————————————————————————————————————————————...

Zabbix Server源码安装

说明: zabbix由2部分构成,zabbix server与可选组件zabbix agent。 zabbix server可以通过SNMP,zabbix agent,ping,端口监视等...

Cent os 6.5 zabbix_server2.4.7源码安装

个人习惯软件下载目录 /usr/local/src 1、下载需要的软件包 cd /usr/local/src yum -y install gcc gcc-c++ autoconf httpd mys...
  • Jonnter
  • Jonnter
  • 2016年04月06日 17:26
  • 307
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:zabbix源码阅读——zabbix_server
举报原因:
原因补充:

(最多只允许输入30个字)