因为最近在钻研监控零碎选型,次要想用于监控一些中间件、数据库以及业务自身。市面上最罕用的开源监控零碎有zabbix、prometheus、open-falcon,其中资格最老的当属zabbix,他曾经22岁了(可能比在看的你的年龄都大,当然比老夫我还是差一点),网上各种乱搜一通,对于prometheus的呼声是最高的,然而zabbix毕竟是老大哥,就算他人说他在应用层监控方面不如prometheus,我还是想先钻研一下zabbix,毕竟死也要死的明确,所以本篇来聊聊监控零碎的老大哥-zabbix。
知识点
zabbix整体架构
zabbix搭建及遇到的坑
如何监控jvm信息
zabbix整体架构
依据本人的了解大略画了一下zabbix的架构图,从图中能够看出以下信息:
- zabbix是反对分布式收集的,并且应用了proxy来分担server的收集压力。
- 数据库反对mysql和postgresql,前者是一开始应用的数据库,后者是4.2版本之后才开始反对的时序数据库,是一种优化。
- 显示端有zabbix自带的由php开发的web页面,也能够通过集成到第三方ui进行显示(比方grafana)。
- 反对被动模式和被动模式,也就是server能够被动来agent拉取数据,也能够是agent被动推送数据给server。
波及到5个名词:zabbx server、zabbix agent、zabbix proxy、zabbix_get、zabbix_sender,我这里顺次介绍一下
zabbx server:zabbix服务端,由C语言编写,属于最外围的局部,从agent、proxy收集所有指标并存入数据库,也反对间接通过JMX、SNMP等协定进行指标数据间接收集,由web端获取数据进行展现。
zabbix agent:zabbix客户端,次要用于部署在被监控的服务器上进行指标收集,并将收集的数据传递给proxy或者server,反对被动模式和被动模式传递数据。
zabbix proxy:服务端代理,用于帮忙server端收集agent端发来的指标信息,再传给server端,不是必须组件,在zabbix较多的时候能够分担server端压力。
zabbix get:一个命令工具,用于人工跑命令获取agent的指标项。
zabbix sender:一个命令工具,用于人工跑命令将指标数据发送至proxy或者server端。zabbix搭建及遇到的坑
理解了zabbix的整体运行架构之后,咱们开始来手动部署一下本人的zabbix。
zabbix装置和部署非常简单,依据官网的文档间接来就行,这里给一个链接,大家能够依据本人的须要装置对应的版本,https://www.zabbix.com/cn/dow...。
我这里选的是如下组合进行装置:
这里不具体讲每一步的装置过程,次要讲讲我装置的过程中遇到的坑第一坑:Configure DB connection
第一个坑就是下面这一步,在配置到这一步界面的时候点击下一步,间接提醒no such file or directory,将host改为127.0.0.1之后再点下一步,又提醒Permission denied,由此容易联想到权限不够,于是关上zabbix_server.config配置文件,把数据库相干配置都改为新建的zabbix用户
重启之后再点击下一步按钮,仍然提醒该谬误,也没有更多的错误信息,于是就去找对应的server日志,发现如下谬误:
很显著是基于/var/lib/mysql/mysql.sock去连贯mysql数据库失败了,我全局查了一下mysql.sock,发现只存在于tmp/目录下,/var/lib/mysql/目录下并不存在该sock,于是就在/var/lib/mysql/目录下加了一个tmp/mysql.sock的虚链接。又一次点击下一步,这次仍然还是不行。此时曾经有点失望了,就想着既然页面上连不上,我本地的数据库工具是否能够连过来看看呢?用本地的数据库工具连贯过来发现果然不行,提醒"unable-to-load-authentication-plugin-caching-sha2-password",这个问题查了一下,大略就是客户端用的Mysql驱动是5.x版本,服务端如果是Mysql8.x版本的话就会呈现这种状况,解决办法就是更改对应用户的明码加密形式为mysql_native_password。
通过下面的折腾之后这一步坑终于过来了,正式装置实现。第二坑:登录下来之后始终没有数据显示
用户名明码登录进去之后,发现没有任何数据,一开始认为须要做一些额定配置,后果不小心看到页面底下有一个小提示:
于是开始网上一顿搜,发现一个很要害的点:selinux的一些安全策略会对zabbix有肯定影响。什么是selinux,参考这篇https://blog.csdn.net/yanjun8...。当然具体是selinux的什么策略导致zabbix什么问题就没有去深究了,因为这个深究起来又得花不少工夫,感兴趣的能够本人去理解一下。解决方案很简略,就是把零碎的selinux模块禁用掉。
解决掉这两个坑之后,所有显得那么美妙:
默认的主机项中的数据曾经开始进去,这个图里也能够看出对中文反对不那么敌对,有一些乱乱码,如何解决中文乱码问题,这里就不多说了,本人网上轻易找。
如何监控jvm信息
zabbix的设计初衷是监控网络、服务器硬件资源状况等信息,所以对于软件应用类的反对就做得还不够好,对于咱们开发人员来说,天然是心愿可能监控到利用的状况,这一节就聊聊如何监控jvm,对于节点业务的监控,当前的文章会讲到。
说到监控jvm信息,不得不提到JMX,咱们平时在做一些近程调试或者应用visualvm监控近程jvm状况的时候都会用到JMX。zabbix为了兼容java,提供了zabbix_java_gateway扩大,咱们通过装置
zabbix_java_gateway并在被监控的利用中配置好监控点就能够开始着手配置zabbix,上面咱们一步一步来。
以centos7为例:
1、装置gateway:
yum install zabbix-java-gateway;
2、批改zabbix_java_gateway.conf配置文件:
LISTEN_IP=“0.0.0.0”
LISTEN_PORT=10052
START_POLLERS=5
3、批改zabbix_server.config中对gateway的监控配置:
JavaGateway=127.0.0.1
JavaGatewayPort=10052
StartJavaPollers=5
StartJavaPollers 应小于等于zabbix_java_gateway.conf 中START_POLLERS的值
4、重启zabbix server 和java gateway:
systemctl restart zabbix-server
systemctl restart zabbix-java-gateway
5、批改被监控主机配置:
就是对应的jvm承载的利用配置,启动的时候要增加JMX反对,我这里为了不便,把认证相干的都去掉了
6、web界面增加对应的主机监控
7、增加对应的模板
以上步骤实现之后,就会发现曾经有了
过一会儿,数据也呈现了
总结
咱们认为很简略的货色往往在理论应用的时候才会真正遇到问题,所以实际了才晓得本人真的把握了没有。很多人在遇到问题之后就会开始泄气,我感觉没有必要,解决问题尽管花工夫,但同时也会让你积攒到很多新常识,解决之后才会感叹一声:哦,原来是这样,这TM也行。。。
参考资料
https://www.zabbix.com/
https://blog.51cto.com/liuzhe...