以下大多数都是笔者自身的体会和理解,希望大家多多指点
1.什么是zabbix ?
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。用我自己的话来说,zabbix就是一个提供一个全方位的监控的工具,由zabbix-server和zabbix-agent来完成,有时也用zabbix-proxy代理server去取agent的监控数据。
zabbix-server是在zabbix服务器上安装,也就是提供web监控界面的服务器,它主要是负责通过SNMP、zabbix-agent、ping、采集到的数据通过一定的模板以图形化的方式显示到web界面;zabbix-server也需要数据库与web-ui界面进行交互。
zabbix-agent部署在所要监控的主机上,主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。它支持被动获取和主动获取两种方式。被动获取是zabbix-agent向zabbix-server发送数据,主动获取是zabbix-server主动去zabbix-agent索要数据。
zabbix-proxy可以理解为代替server去获取zabbix-agent的监控数据再转而交付给zabbix-server,这样可以减轻zabbix-server端的压力,CPU的消耗和磁盘IO的负载,因为zabbix-server只需要一个端口来和proxy连接就可以获取多个agent的监控数据。因此,proxy是一个可选项。
2.为什么用zabbix?
其实除了zabbix监控软件之外还有其他的比较好的监控软件,比如Nagios,cscti,还有被称为下一代监控的prometheus,这些监控软件的特点我就不一一解释了,感兴趣的话可以去各个官网查看,或者看大牛的分析对比,最好是能切身体会一番。那为什么要使用zabbix而不使用别的监控设备呢?依笔者个人来看,zabbix具有很丰富的图形化界面以及绘图,同时zabbix的监控项相当丰富,且配置简单。但是,zabbix的优点也是它的缺点,监控项太多,监控数据量较大会导致数据库成为瓶颈。后端用C开发,界面用PHP开发,定制化的难度会很大。
3.zabbix的原理
完整的zabbix监控由三部分组成,zabbix-server、zabbix-proxy、zabbix-agent,功能我在上面已经有所描述。这里具体说来说它的工作流程,如上图所式,
zabbix_agent是装在被监控的主机上,有两个重要的文件,zabbix_agent.log、zabbix_agnet.conf,.log文件存放的是与zabbix-server或者zabbix-proxy交互的信息,.conf是它的配置文件,主要指定了监控的数据要发送给哪一台主机。由上图的server100可以看到,agent会去数据库、应用、以及Device获取监控信息。
zabbix_proxy类似与zabbix_server,与zabbix_server不同的是,它将收集到的监控数据并不展现在web UI上,而是将收集到的所有监控数据通过一个端口发送到zabbix_server上,可以有效减少zabbix_server的CPU和端口的消耗。它的两个文件作用也是与agent的作用类似。
zabbix_server将接收到的数据以一定的模板显示在web UI界面,当然,这个web UI界面是前端人员用PHP开发的,我们只需要拿来用就可以了,但这并不意味着运维人员就可以不用写代码,未来的发展趋势肯定是运维+开发,智能运维已经成为了一种趋势。我们可以不去写代码,但至少要懂代码,会改代码。
4.zabbix部署
1)两台主机简单实现zabbix监控
实验环境:rhel7.3
server1 172.25.254.101 zabbix-server
server2 172.25.254.