zoukankan      html  css  js  c++  java
  • 使用zabbix server监控tomcat实战案例

           使用zabbix server监控tomcat实战案例

                                作者:尹正杰

    版权声明:原创作品,谢绝转载!否则将追究法律责任。

     

      大家都知道,zabbix server效率高是使用C语言编写的,有很多应用程序是使用Java写的,zabbix如何去监控呢?官方有一个组件叫做Zabbix Java Gateway。Zabbix在监控Java 程序时首先会去找Zabbix Java Gateway,然后Zabbix Java Gateway再去找JMX取数据。

     

    一.部署tomcat并启用JMX实战案例

      博主推荐阅读:
        https://www.cnblogs.com/yinzhengjie2020/p/12315341.html

    二.部署zabbix java gateway服务 

      博主推荐阅读:
        https://www.cnblogs.com/yinzhengjie2020/p/12318937.html

    三.配置zabbix server支持zabbix java gateway

    1>.指定zabbix java gateway的IP地址

    [root@zabbix203.yinzhengjie.org.cn ~]# grep JavaGateway= /yinzhengjie/softwares/zabbix/etc/zabbix_server.conf
    # JavaGateway=
    [root@zabbix203.yinzhengjie.org.cn ~]# 
    [root@zabbix203.yinzhengjie.org.cn ~]# sed -r -i 's@# (JavaGateway=)@1172.200.5.253@' /yinzhengjie/softwares/zabbix/etc/zabbix_server.conf
    [root@zabbix203.yinzhengjie.org.cn ~]# 
    [root@zabbix203.yinzhengjie.org.cn ~]# grep JavaGateway= /yinzhengjie/softwares/zabbix/etc/zabbix_server.conf
    JavaGateway=172.200.5.253
    [root@zabbix203.yinzhengjie.org.cn ~]# 
    [root@zabbix203.yinzhengjie.org.cn ~]# sed -r -i 's@# (JavaGateway=)@1172.200.5.253@' /yinzhengjie/softwares/zabbix/etc/zabbix_server.conf

    2>.指定zabbix java gateway的监听端口(此处我使用的是默认端口)

    [root@zabbix203.yinzhengjie.org.cn ~]# grep JavaGatewayPort= /yinzhengjie/softwares/zabbix/etc/zabbix_server.conf
    # JavaGatewayPort=10052
    [root@zabbix203.yinzhengjie.org.cn ~]# 
    [root@zabbix203.yinzhengjie.org.cn ~]# sed -r -i 's@# (JavaGatewayPort=10052)@1@' /yinzhengjie/softwares/zabbix/etc/zabbix_server.conf
    [root@zabbix203.yinzhengjie.org.cn ~]# 
    [root@zabbix203.yinzhengjie.org.cn ~]# grep JavaGatewayPort= /yinzhengjie/softwares/zabbix/etc/zabbix_server.conf
    JavaGatewayPort=10052
    [root@zabbix203.yinzhengjie.org.cn ~]# 
    [root@zabbix203.yinzhengjie.org.cn ~]# 
    [root@zabbix203.yinzhengjie.org.cn ~]# sed -r -i 's@# (JavaGatewayPort=10052)@1@' /yinzhengjie/softwares/zabbix/etc/zabbix_server.conf

    3>.指定zabbix server的用于zabbix java gateway的工作线程数(推荐小于等于你生产环境的core数)

    [root@zabbix203.yinzhengjie.org.cn ~]# grep StartJavaPollers= /yinzhengjie/softwares/zabbix/etc/zabbix_server.conf
    # StartJavaPollers=0
    [root@zabbix203.yinzhengjie.org.cn ~]# 
    [root@zabbix203.yinzhengjie.org.cn ~]# 
    [root@zabbix203.yinzhengjie.org.cn ~]# sed -r -i 's@# (StartJavaPollers=)0@132@' /yinzhengjie/softwares/zabbix/etc/zabbix_server.conf
    [root@zabbix203.yinzhengjie.org.cn ~]# 
    [root@zabbix203.yinzhengjie.org.cn ~]# grep StartJavaPollers= /yinzhengjie/softwares/zabbix/etc/zabbix_server.conf
    StartJavaPollers=32
    [root@zabbix203.yinzhengjie.org.cn ~]# 
    [root@zabbix203.yinzhengjie.org.cn ~]# sed -r -i 's@# (StartJavaPollers=)0@132@' /yinzhengjie/softwares/zabbix/etc/zabbix_server.conf

    4>.重启zabbix server使得配置生效

    [root@zabbix203.yinzhengjie.org.cn ~]# systemctl restart zabbix-server.service 

    5>.验证zabbix server启动的zabbix java gateway的工作线程数是否和咱们配置的一致

    [root@zabbix203.yinzhengjie.org.cn ~]# ps -ef | grep "java poller" | grep -v grep | wc -l
    32
    [root@zabbix203.yinzhengjie.org.cn ~]# 

     

    四.配置zabbix webUI对tomcat的监控

    1>.如下图所示,依次点击"配置" ---> "主机" ---> "创建主机"

    2>.配置主机信息

    3>.如下图所示,选择tomcat模板

    4>.添加到链接模板

    5>.链接模板添加成功,点击"添加"按钮会添加主机

    6>.主机添加成功啦~

    7>.观察默认的tomcat模板无法采集到数据

    8>.将之前的模板取消掉

    9>.选择通用的java模板

    10>.点击添加按钮

    11>.点击更新按钮

    12>.模板更换成功

    13>.更换了多个版本之后,发现JMX始终无法监控到zabbix数据(就得考虑zabbix java gateway的版本是否和zabbix server版本一致性的问题了)

    14>.剖析zabbix webUI始终无法获取到数据的原因(zabbix server 和zabbix java gateway版本不一致)

      遇到JMX监控不到数据时,仔细回忆了监控tomcat的过程:
        (1)部署tomcat并且用JMX功能,而且使用windows安装的JConsole工具测试过可用正常监控到数据,排除tomcat及其的可能性;
        (2)部署zabbix java gateway,我使用的apt命令行工具安装的,就是为了图省事;
        (3)在zabbix server中配置zabbix java gateway服务器的地址及端口;
        (4)在webUI添加对tomcat的监控信息;

      综上所述,四个步骤中最可能出现问题的就是第(2)步和第(3)步,经过我仔细检查zabbix server的配置后,确认第(3)步不是故障点,于是所有矛头指向了第(2)步,于是我登录到zabbix java gateway服务器上,尽管服务是正常启动的,查看日志我们就发现了问题,zabbix java gateway 和zabbix server版本不一致,如下图所示。

      问题解决方案:
        使用源码方式安装zabbix java gateway,或者直接部署在和zabbix server上也是可以的。

    15>.解决问题

      干货分享:
        安装zabbix 相关组件时,建议大家不要一会编译安装,一会yum/apt等操作系统自带工具包进行安装,这样你无法确认使用的zabbix版本是否是一致性的。
        因此我推荐大家生产环境部署服务时,尽量采用编译方式安装,这样类似于版本不一致的问题就会迎刃而解啦~

    五.使用自定义的模板监控tomcat

    1>.点击导入模板

    2>. 从本地选择到导入的模板

    3>.导入成功

    4>.导入模板成功

    5>.接下里就可用让监控的主机使用咱们自定义的模板

    6>.模板链接成功

    7>.查看tomcat的监控图形

    六.监控java程序的JMX端口数据工具"cmdline-jmxclient-0.10.3.jar"

    1>.下载"cmdline-jmxclient-0.10.3.jar"工具(需要翻墙)

      博主推荐阅读:
        http://www.crawler.archive.org/cmdline-jmxclient/downloads.html

    2>.测试能否获取到java当前已经分配的线程数

    [root@zabbix203.yinzhengjie.org.cn ~]# java -jar cmdline-jmxclient-0.10.3.jar - 172.200.5.250:12345 'Catalina:name="http-nio-8080",type=ThreadPool' currentThreadCount

    2>.测试能否获取到java最大的线程数

    [root@zabbix203.yinzhengjie.org.cn ~]# java -jar cmdline-jmxclient-0.10.3.jar - 172.200.5.250:12345 'Catalina:name="http-bio-8080",type=ThreadPool' maxThreads
  • 相关阅读:
    42.OC中instancetype与id的区别
    41.App 框架的搭建思路以及代码的规范
    44、WebStrom下载和破解
    40、IOS自动打包-Python脚本
    39、字符串去除空格
    38、当前时间是否在开放时间内(也就是时间对比)
    37、自定义气泡
    36、NSTimer使用详解-开启、关闭、移除
    35、输入框(UITextField)密码明暗文切换
    34、iOS App图标和启动画面尺寸
  • 原文地址:https://www.cnblogs.com/yinzhengjie2020/p/12319408.html
Copyright © 2011-2022 走看看