设为首页 收藏本站
查看: 1421|回复: 0

[经验分享] ZABBIX实现原理及架构详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-9-11 11:01:18 | 显示全部楼层 |阅读模式
zabbix是完全开源的工具,整合了cacti和nagios等特性。
zabbix功能很强大,如何理解zabbix的功能,我们可以和cacti、nagios的功能对比一下:
  • cacti是一款数据采集,数据存储,外加web界面展示的工具,它负责阈值范围内的实时变化,但是对超过阈值的告警功能很薄弱

    • 优点:实时监控数据变化,以web页面的方式呈现,更直观。
    • 缺点:告警不及时

  • nagios是一款告警功能很强大的工具,它不关心阈值范围内的变化,只关心状态变化(超过阈值),然后报警。报警方式通过邮件,短信等。

    • 优点:告警反映迅速。
    • 缺点:监控主机数量有限,承载低

  • zabbix    =   cacti   +  nagios

    • 优点:基于两款工具优点于一身并更强大,实现企业级分布式监控。
    • 缺点:2.2版本带宽占用大但是升级到2.4版本后更节省了带宽资源,其它再无发现。


zabbix监控功能的实现
监控主机zabbix有专用的agent,可以监控Linux,Windows等
监控网络设备zabbix通过SNMP,ssh(不多用)
可监控对象

    • 设备:服务器,路由器,交换机
    • 软件:OS,网络,应用程序
    • 主机性能指标监控
    • 故障监控: down机,服务不可用,主机不可达

支持数据库存储类型
abbix-database: MySQL, PGSQL(postgreSQL)、Oracle、DB2、SQLite

Zabbix架构中的组件
zabbix-server: C语言
zabbix-agent: C语言
zabbix-web:GUI,用于实现zabbix设定和展示,PHP开发
zabbix-proxy: 分布式监控环境中的专用组件
996586-20170818113035100-629235.jpg

监控流程
一个监控系统运行的大概的流程是这样的:
agentd需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。这里agentd收集数据分为主动和被动两种模式:
主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
被动:server向agent请求获取监控项的数据,agent返回数据。
【主动监测】通信过程如下:
zabbix首先向ServerActive配置的IP请求获取active items,获取并提交active tiems数据值server或者proxy。很多人会提出疑问:zabbix多久获取一次active items?它会根据配置文件中的RefreshActiveChecks的频率进行,如果获取失败,那么将会在60秒之后重试。分两个部分:
获取ACTIVE ITEMS列表
  • Agent打开TCP连接(主动检测变成Agent打开)
  • Agent请求items检测列表
  • Server返回items列表
  • Agent 处理响应
  • 关闭TCP连接
  • Agent开始收集数据

主动检测提交数据过程如下:
  • Agent建立TCP连接
  • Agent提交items列表收集的数据
  • Server处理数据,并返回响应状态
  • 关闭TCP连接

【被动监测】通信过程如下:
  • Server打开一个TCP连接
  • Server发送请求agent.ping\n
  • Agent接收到请求并且响应<HEADER><DATALEN>1
  • Server处理接收到的数据1
  • 关闭TCP连接

这里,被动模式每次都需要打开一个tcp连接,这样当监控项越来越多时,就会出现server端性能问题了。
那实际监控中是用主动的还是被动的呢?这里主要涉及两个地方:
1、新建监控项目时,选择的是zabbix代理还是zabbix端点代理程式(主动式),前者是被动模式,后者是主动模式。
2、agentd配置文件中StartAgents参数的设置,如果为0,表示禁止被动模式,否则开启。一般建议不要设置为0,因为监控项目很多时,可以部分使用主动,部分使用被动模式。

常用的监控架构平台
1、server-agentd模式:
这个是最简单的架构了,常用于监控主机比较少的情况下。
2、server-proxy-agentd模式:
这个常用于比较多的机器,使用proxy进行分布式监控,有效的减轻server端的压力。
下图描述了上述两种方式:
996586-20170818113117006-1609690003.jpg

Zabbix逻辑架构
  • 定义一个template模板,里面包括多个items,trigger,graphs套用给host或者hostgroups。
  • server监控项目items通过zabbix poller进程(可以有多个进程实现并发处理)包括snmp,agent协议收集被监控主机信息。
  • 如果阈值超过triggers触发器规定,就是形成一个events事件,然后actions处理动作(包括运行预先定制的脚本,不成功发送email或SMS)。
  • 在服务器升级的时候提前设定maintenance维护模式不对服务器产生告警通知。
    通过逻辑拓扑图展示工作流程

996586-20170818114824334-645524774.jpg
Zabbix Server启动后都有那些进程?
996586-20170818115204818-2013753802.jpg



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-404332-1-1.html 上篇帖子: Zabbix自定义监控脚本,显示权限不足 下篇帖子: ZABBIX 3.2.7 (源码包)安装部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表