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源代码阅读--zabbix_agent

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

zabbix源码分析

  • 2013年10月29日 11:08
  • 14KB
  • 下载

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

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

zabbix源码阅读——zabbix_server

转载自:http://blog.csdn.net/liujian0616/article/details/7946492 现在简单的描述一下zabbix_server端的各个进程及其功能 1....
  • u011731378
  • u011731378
  • 2017年07月06日 15:01
  • 324

zabbix server与agent源码分析.rar

  • 2015年07月28日 17:34
  • 38KB
  • 下载

zabbix_agent源码分析

Zabbix-agent 功能简介:  Zabbix-agent是安装在被监控主机上的应用程序,主要负责数据的采集如:cpu占用率、内存使用情况、网络传输数据、端口连接状态、文件(如打开的文件个数)监...
  • u011731378
  • u011731378
  • 2018年01月18日 09:46
  • 59

zabbix配置详解---为新手入门而写

Zabbix详解 安装运行环境(LAMP) 通过web页面查看和配置监控信息 yum -y install httpd;service httpd start;chkonfig httpd on 使用...
  • wudixingyunxingxing
  • wudixingyunxingxing
  • 2017年02月23日 00:44
  • 4664

Centos 6.5 Zabiix 配置Mysql服务

安装 zabbix-agent 客户端服务 yum -y install http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-...
  • hanzheng260561728
  • hanzheng260561728
  • 2016年10月14日 15:16
  • 391

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
  • 23371

zabbix 3.0 源码安装

zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统...
  • wanglei_storage
  • wanglei_storage
  • 2015年09月09日 11:54
  • 2332
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:zabbix源码阅读——zabbix_server
举报原因:
原因补充:

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