参考: [ JMX monitoring ] [ Zabbix Java gateway ] [ JMX Monitoring (Java Gateway) not Working ] [ Monitoring and Management Using JMX ]

  • 这里会说明通过 JMX 监控 java 进程的配置过程以及需要注意的问题.

  • 本文在 zabbix 已经安装好的基础之上展开. 如果使用 zabbix_proxy , 配置完全一致, 只需要打开zabbix_proxy 对 java app server 有所有端口的访问权限即可.

环境说明

基本环境

  • OS: CentOS 7.x
  • Zabbix 系列版本: 3.4.11
  • zabbix-server IP: 172.16.1.10
  • zabbix-java-gateway IP: 172.16.1.10
  • java app server IP: 172.16.1.11

网络配置需求

zabbix 相关进程都监听在默认端口:

  • zabbix-server: 10051
  • zabbix-agentd: 10050
  • zabbix-java-gateway: 10052

  • zabbix-server: 访问 zabbix-agentd 10050
  • zabbix-agentd: 访问 zabbix-server 10051
  • zabbix-java-gateway: 访问 zabbix-agentd 所有随机端口权限. (原因可以查看 这里) 因为zabbix_java_gateway 还会使用一个随机端口来访问远程主机的 RMI 信息.

zabbix 配置

安装 zabbix-java-gateway

在 172.16.1.10 (zabbix-server / zabbix-java-gateway ) 上执行:

rpm -i https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

yum -y install zabbix-java-gateway

**配置 /etc/zabbix/zabbix_java_gateway.conf **

LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
PID_FILE="/var/run/zabbix/zabbix_java.pid"
START_POLLERS=5
TIMEOUT=3

配置 /etc/zabbix/zabbix_server.conf

JavaGateway=localhost
JavaGatewayPort=10052
StartJavaPollers=5

关于 START_POLLERSStartJavaPollers 值的设定需求: StartJavaPollers <= START_POLLERS ( [ 原因 ])

如果 StartJavaPollers > START_POLLERS, 会出现 zabbix-java-gateway 没有线程来接收进来的请求.

启动服务

# start zabbix-server
zabbix_server # start zabbix-java-gateway
zabbix_java-gateway

Java App 启动参数的配置

具体可以参考 [ 这里 ].

启动参数如下

java \
-Djava.rmi.server.hostname=172.16.1.11 \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=18383 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-jar /data/app/demo.jar

这里需要说明:

  • Djava.rmi.server.hostname : 这里需要指定 Java App 运行服务器的 IP 地址. 如果不指定这个参数, 则只接收来自 localhost 的请求.
  • Dcom.sun.management.jmxremote.port: JMX 监听的端口. 只要不冲突即可.

附上shell 启动脚本

#!/bin/sh
# - start.sh
# app=$1
basic_path=/data/app
# Ubuntu
host_ip=`ifconfig | egrep -A 2 "eth|ens" | awk -F "[: ]" '/\<inet\>/ && !/127.0.0.1/{sub(/^[ \t]+/,"");print $3}'` # CentOS
# host_ip=`ifconfig| egrep -A 2 "eth|ens" | awk -F "[ X]+" '/\<inet\>/ && !/127.0.0.1/ {sub(/^[ \t]+/,"");print $2}'` # first args could be jar name or directory name.
app_name=`echo $app | awk -F. '{print $1}'` JAVA_OPS=" -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=18383 -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=$host_ip" nohup /usr/bin/java $JAVA_OPS -jar $basic_path/$app_name/$app_name.jar >/dev/null 2>&1 & [ $? == 0 ] && echo -e "Start Success!\n"

Zabbix GUI 配置

配置请看 [ 这里 ].

配置 JMX Interface:

  • IP Address: Java APP 所在的服务器地址
  • Port: Dcom.sun.management.jmxremote.port 所配置的端口
  • Link 模板

在配置过程中需要注意的地方:

  • zabbix-server ( 或者 zabbix-proxy ) 需要有访问 Java App Server 的所有随机端口的权限.

本地随机端口可以用: sysctl net.ipv4.ip_local_port_range 查看, 默认为 32768 - 60999, 所以在 Java App Server 上打开这些端口的对于 zabbix-server ( 或 zabbix-proxy ) 的访问权限.

Zabbix 通过 JMX 监控 java 进程的更多相关文章

  1. Linux记录-JMX监控JAVA进程

    3.修改xxx.sh 加入export JAVA_OPTS="-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.mana ...

  2. 利用VisualVm和JMX远程监控Java进程

    自Java 6开始,Java程序启动时都会在JVM内部启动一个JMX agent,JMX agent会启动一个MBean server组件,把MBeans(Java平台标准的MBean + 你自己创建 ...

  3. zabbix使用jmx监控tomcat

    zabbix监控Tomcat/JVM实例性能(115) – 运维生存时间http://www.ttlsa.com/zabbix/zabbix-use-jmx-monitor-tomcat/ zabbi ...

  4. zabbix 部署 jmx 监控tomcat

    zabbix提供了一个java gateway的应用去监控jmx(Java Management Extensions,即Java管理扩展)是一个为应用程序.设备.系统等植入管理功能的框架.JMX可以 ...

  5. zabbix通过jmx监控tomcat

    Zabbix版本: Zabbix 3.0.2 一.服务端配置 1.安装jdk(版本1.7.0_79) 安装与配置比较简单,过程省略.执行java -version命令,出现类似界面表示成功.   2. ...

  6. Zabbix自动发现监控Tomcat进程

    1.编辑自动发现脚本 自动发现脚本只支持JSON格式 #!/usr/bin/env python # -*- coding:utf-8 -*- import commands import psuti ...

  7. 通过JDK常用工具监控Java进程的内存占用情况

    目录 1 JDK 工具的使用 2 查看 GC 日志信息 3 添加 JMS 远程监控 Tomcat是一款常用的Web容器, 它是运行在 JVM(Java Virtual Machine) 中的一个Jav ...

  8. 性能测试之监控--zabbix通过jmx监控tomcat

    前提: 已经安装好了zabbix server 实验环境 Centos 7 Zabbix 3.0 Tomcat 7.0 JDK 1.8 安装JDK tar -zxvf jdk-8u181-linux- ...

  9. shell脚本--监控java进程存活脚本

    #!/bin/bash base_dir=/opt war_processor="tomcat" jar_processor="manager-server.jar pl ...

随机推荐

  1. ACM 第八天

    数据结构和算法目录表 数据结构和算法目录表   C C++ Java 线性结构 1. 数组.单链表和双链表 2. Linux内核中双向链表的经典实现  数组.单链表和双链表  数组.单链表和双链表   ...

  2. lintcode-33-N皇后问题

    33-N皇后问题 n皇后问题是将n个皇后放置在n*n的棋盘上,皇后彼此之间不能相互攻击. 给定一个整数n,返回所有不同的n皇后问题的解决方案. 每个解决方案包含一个明确的n皇后放置布局,其中" ...

  3. oracle RAC集群启动和关闭

    oracle 11G RAC集群启动和关闭:1.停止数据库$srvctl stop database –d oradb2.停止集群服务关闭集群需要root运行#/u01/11.2.0/grid/bin ...

  4. python 爬虫每天定时启动爬虫任务

     # coding=utf-8 import datetime import time def doSth(): # 这里是执行爬虫的main程序     print '爬虫要开始运转了....'   ...

  5. [C/C++] const用法详解

    const在C语言中算是一个比较新的描述符,我们称之为常量修饰符,意即其所修饰的对象为常量(immutable). 我们来分情况看语法上它该如何被使用. 1.函数体内修饰局部变量.例:void fun ...

  6. [STL] 如何将一个vector赋给另一个vector

    vector 有个函数assign, 可以帮助执行赋值操作. assign会清空你的容器. assign函数: 函数原型: void assign(const_iterator first,const ...

  7. 移动端body跟着模态框一起滑动问题

    遇到了一个问题,是点击链接出现弹框,弹框里面的内容是可以滑动的,结果我滑动的时候发现下面的body也跟着一起滑动,先看一下代码. 弹框的 HTML: <div class="mask& ...

  8. 浅析Nim游戏(洛谷P2197)

    首先我们看例题:P2197 nim游戏 题目描述 甲,乙两个人玩Nim取石子游戏. nim游戏的规则是这样的:地上有n堆石子(每堆石子数量小于10000),每人每次可从任意一堆石子里取出任意多枚石子扔 ...

  9. 【刷题】BZOJ 5154 [Tjoi2014]匹配

    Description 有N个单身的男孩和N个单身女孩,男孩i和女孩j在一起得到的幸福值为Hij.一个匹配即对这N个男孩女孩的安排: 每个男孩恰好有一个女朋友,每个女孩恰好有一个男朋友.一个匹配的幸福 ...

  10. BZOJ4566:[HAOI2016]找相同字符——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4566 https://www.luogu.org/problemnew/show/P3181 给定 ...