乐趣区

关于zabbix:浅谈zabbix

因为最近在钻研监控零碎选型,次要想用于监控一些中间件、数据库以及业务自身。市面上最罕用的开源监控零碎有 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…

退出移动版