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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • pandas dropna删除有空值的行_pandas中导出缺失值

    pandas dropna删除有空值的行_pandas中导出缺失值pandas删除空数据行及列dropna()importpandasaspd#删除含有空数据的全部行df4=pd.read_csv(‘4.csv’,encoding=’utf-8′)df4=df4.dropna()#可以通过axis参数来删除含有空数据的全部列df4=df4.dropna(axis=1)#可以通过subset参数来删除在age…

  • 使用()命令来启用FTP服务_windows播放ftp

    使用()命令来启用FTP服务_windows播放ftp首先是win10控制面板–》程序–》启用或关闭windows功能找到Internetinformationservice(信息服务),并选中“FTP服务”、“FTP扩展性”和“IIS管理控制台”前的复选框,点击“确定”在C盘创建一个FTP共享文件夹,名字自定义接下来是控制面板–》系统和安全–》管理工具–》InternetInformationServices(IIS)管理器如下图所示,鼠标右键红框地方添加FTP站点站点名称自定义,路径选择先前创建的文件夹,

  • clion2022.01.4激活码【中文破解版】2022.03.07

    (clion2022.01.4激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • 分享.NET 轻量级的ORM

    分享.NET 轻量级的ORM

  • 修改 nginx 的默认端口「建议收藏」

    修改 nginx 的默认端口「建议收藏」nginx安装的时候有一个坑,需要注意,那就是默认端口号配置的是80.大家知道iis里面的服务默认也是80.如果是在windows服务里面安装的话,之前已经有iis。那么你就会报错。报端口号被占用。具体英文忘记了怎么写。这个时候,2种方法,一修改nginx的配置文件,不让他用80端口号。这是最好的方法。修改文件:找到nginx压缩文件:nginx不需要做任何的安装,在他的官网上下载后,直接解压后出现如下图就ok。我的另外一篇文章有具体操作,可以去看。打开conf,找到ngin..

  • 什么是依赖注入

    什么是依赖注入

    2021年11月13日

发表回复

您的电子邮箱地址不会被公开。

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