zabbix监控jmx

zabbix监控jmx背景:目前公司用的主要语言就是java,然后在运维过程中会遇到频繁的内存溢出的情况,之前使用过elk日志分析系统可以实时的判断出内存溢出的情况,但是无法查看内存的使用情况,只能通过dump文件查看内存溢出的时候dump下来的文件去分析。这样也无法准确的判断出问题。zabbix可以监控java,并且将内存的使用情况实时的展现出来,这是一个不错的选择。JMX的全称是JavaManagement…

大家好,又见面了,我是你们的朋友全栈君。

背景:目前公司用的主要语言就是java,然后在运维过程中会遇到频繁的内存溢出的情况,之前使用过elk日志分析系统可以实时的判断出内存溢出的情况,但是无法查看内存的使用情况,只能通过dump文件查看内存溢出的时候dump下来的文件去分析。这样也无法准确的判断出问题。zabbix可以监控java,并且将内存的使用情况实时的展现出来,这是一个不错的选择。

JMX的全称是Java Management Extensions,即Java管理扩展。Java程序会开放一些端口,用来获取运行状况。在Zabbix 1.8以前,只能使用Zapcat来监控JMX,并需要修改源代码来支持,非常麻烦。另一种方法是使用jmx-cmd-client,他的作用是从命令行去获取JMX信息,可以在它的上层包装一个程序,用来获取JMX数据。

    从Zabbix 2.0开始,内置了监控JMX的功能,叫做“Zabbix Java Gateway”,在Zabbix Server和Zabbix Proxy上启动名为“Zabbix Java Gateway”的进程,当需要获取JMX数据时,Zabbix Server会“问”JMX Gateway,然后JMX Gateway根据JMX管理API去查询需要的数据。在使用时,Java程序不需要在代码中新增任何东西,只需要在启动的时候加上一些JVM参数,使得它可以支持使用端口监控JMX。

zabbix jmx的架构:

 

zabbix server -> zabbix java Gateway -> jmx counter

zabbix的安装这里稍微讲下,需要开启java以及后续要用到ldap认证

所以需要在编译的时候将功能编译进去,但首先取药安装这些组件比如java php-ldap等

yum install libssh2-devel.*

yum install libssh2-devel.i686

yum install openldap openldap-devel

yum install unixODBC-devel

安装java

wget http://mirrors.linuxeye.com/jdk/jdk-7u80-linux-x64.tar.gz && tar -xf jdk-7u80-linux-x64.tar.gz -C /usr/local/ && chown root:root -R /usr/local/jdk1.7.0_80/

cat >> /etc/profile << “EOF”

export JAVA_HOME=/usr/local/jdk1.7.0_80

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

EOF

source /etc/profile

java -version

rm -fr /bin/java

ln -s /usr/local/jdk1.7.0_80/bin/java /bin/

java -version

 

 

./configure –enable-java -prefix=/usr/local/zabbix –enable-server –enable-agent –with-mysql –with-net-snmp –with-libcurl –with-net-snmp –with-libcurl –with-libcurl –with-unixodbc –with-ldap –with-ssh2

make && make install

 

创建用户

groupadd zabbix

useradd -r -g zabbix zabbix

cd /usr/local && chown -R zabbix:zabbix zabbix

mysql数据库的话需要以下设置

mysql -uroot -p create database zabbix character set utf8; grant all on zabbix.* to zabbix@localhost identified by ‘zabbix’; mysql -uzabbix -pzabbix zabbix<./database/mysql/schema.sql mysql -uzabbix -pzabbix zabbix<./database/mysql/images.sql mysql -uzabbix -pzabbix zabbix<./database/mysql/data.sql

 

配置配置文件:

cat /usr/local/zabbix/etc/zabbix_server.conf | grep -v ^$ | grep -v ^#

LogFile=/tmp/zabbix_server.log #日志路径

DBHost=**** #mysql地址

DBName=zabbix #mysql库名

DBUser=zabbix #mysql帐号

DBPassword=zabbix_1 #mysql密码

DBSocket=/tmp/mysql.sock #mysql socke的路径

StartDiscoverers=2 #自动发现的初始值

Timeout=4

AlertScriptsPath=/var/lib/zabbixsrv/alertscripts

ExternalScripts=/var/lib/zabbixsrv/externalscripts

LogSlowQueries=3000

TmpDir=/var/lib/zabbix/srv/tmp

 

sudo vim /usr/local/zabbix/sbin/zabbix_java/settings.sh # 需修改的内容如下 #服务器端ip地址

LISTEN_IP=10.1.31.31

LISTEN_PORT=10052

PID_FILE=”/tmp/zabbix_java.pid”

START_POLLERS=5

 

sudo chown zabbix.zabbix /usr/local/zabbix -R

 

sudo vim /etc/zabbix/zabbix_server.conf # 需添加的内容如下 #服务器端ip地址 JavaGateway=10.1.31.31 JavaGatewayPort=10052 StartJavaPollers=5

启动zabbix_java

sudo -iu zabbix cd /usr/local/zabbix/sbin/zabbix_java/ ./startup.sh

传catalina-jmx-remote.jar包到tomcat的lib目录下 没有的话需要下载

修改catalina.sh

sudo vim /home/qjdchina.com/tomcat-server/ams/bin/catalina.sh

#需添加的内容

CATALINA_OPTS=”-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=12345″

com.sun.management.jmxremote.port=12345这个参数也可以加到server.xml

<Listener className=”org.apache.catalina.mbeans.JmxRemoteLifecycleListener” rmiRegistryPortPlatform=”12345″ rmiServerPortPlatform=”12346″ />

images

然后重启tomcat和zabbix客户端的服务,重启之后到服务器端进行测试

java -jar /root/cmdline-jmxclient-0.10.3.jar – 10.1.1.144:12345 java.lang:type=Memory NonHeapMemoryUsage

返回结果如下所示

22/07/2016 15:42:02 +0800 org.archive.jmx.Client NonHeapMemoryUsage: committed: 47316992 init: 24313856 max: 136314880 used: 47012784

 

后续只需要在zabbix web端加入主机 并增加jmx接口 并且加入模版 模版我用的是自定义的模版 如果有需要可以联系我

 

images

模版的效果图展示

images

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142660.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 一些常用的标签丨直接代码「建议收藏」

    一些常用的标签丨直接代码「建议收藏」

    2025年8月20日
    3
  • Android屏幕适配全攻略(最权威的官方适配指导)[通俗易懂]

    Android屏幕适配全攻略(最权威的官方适配指导)[通俗易懂]Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因、重要概念、解决方案及最佳实践,我相信如果你能认真的学习本文,对于Android的屏幕适配,你将不再有疑惑!Android屏幕适配出现的原因在

    2022年5月29日
    34
  • Linux 配置Java环境(图文详细)

    Linux 配置Java环境(图文详细)Linux配置Java环境1、查看系统是否有java环境2、卸载系统自带的jdk1.找到具体的jdk2.然后分别一个一个删除3.验证是否删除成功3、创建一个文件夹用于存放java的压缩包4、包下载好的jdk拖到java文件夹5、安装jdk6、配置环境变量7、让配置生效8、验证是否配置成功1、查看系统是否有java环境输入指令java-version回车即可如图表示Linux系统有自带的jdk,但是这并不是我们想要的,所以得卸载2、卸载系统自带的jdk1.找到具体的jdkrpm-qa

    2022年5月7日
    51
  • python之运算符

    运算符的定义运算符类型1.算数运算符2.比较运算符3.赋值运算符4.位运算符5.逻辑运算符6.成员运算符7身份运算符详情介绍1算数运算2比较运算3赋值运算4位运算:5逻辑运

    2022年3月29日
    43
  • ORACLE游标(oracle游标属性)

    ORACLE游标(oracle游标属性)文章目录1概述1.1思维导图2语法2.1基本写法(4步)2.2游标4大属性3分类3.1静态游标3.1.1隐式游标dml3.1.2显式游标cursor3.2动态游标3.2.1自定义类型refcursor3.2.2系统类型sys_refcursor4扩展4.1三种游标循环效率对比4.2实例:实际开发中,游标遍历数据1概述1.游标是什么?用来存储多条查询数据的一种数据结构(’结果集’),它有一个’指针’,从上往下移动(’fetch’),从而能够’

    2022年4月18日
    87
  • HashMap常见面试题_java面试题大汇总

    HashMap常见面试题_java面试题大汇总1.HashMap的数据结构?哈希表结构(链表散列:数组+链表)实现,结合数组和链表的优点。当链表长度超过8时,链表转换为红黑树。2.HashMap的工作原理?HashMap底层是hash数组和单向链表实现,数组中的每个元素都是链表,由Node内部类(实现Map.Entry<K,V>接口)实现,HashMap通过put&get方法存储和获取。存储对象时,将K/V键值传给put()方法: ①、调用hash(K)方法计算K的hash值,然后结合数组长度,计算得数组下标;

    2022年8月10日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号