前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >zabbix-v4.0系列-自动发现并监控jvm8-简明扼要版

zabbix-v4.0系列-自动发现并监控jvm8-简明扼要版

作者头像
cosmozhu
发布2020-06-15 12:05:20
1K0
发布2020-06-15 12:05:20
举报
文章被收录于专栏:cosmozhu技术篇cosmozhu技术篇

最近在学习zabbix4.0,那如果用zabbix怎么去做jvm的监控呢?抱着这个目的cosmo在zabbix share里边找了一下发现官方提供的模板,是基于JMX的而且适配的是zabbix3.0. 之后又再网上找了一下,发现了这篇博文https://blog.51cto.com/xianglinhu/1757930 ,实现了jstat监控单机多jvm的情况。但cosmo对shell并不是很擅长,看shell脚本有点困难,并且版本较旧。就打算重复造个轮子,用来适配现在的zabbix-v4.0。记录下此文也给之后的同学留个参考。

1. 模板使用环境

zabbix-agent的版本是v4.0.13

python的版本是2.7.5

操作系统是centos7 64位

jdk版本是1.8

默认使用的是linux root用户

2. 下载模板与脚本

代码语言:javascript
复制
# 下载模板并将模板移动到执行文件夹下
git clone https://github.com/chaoxxx/zabbix-agent-jvm8.git
mkdir /etc/zabbix/script
cp zabbix-agent-jvm8/discover-jvm.py /etc/zabbix/script
cp zabbix-agent-jvm8/get-jvm-gc.py /etc/zabbix/script
cp zabbix-agent-jvm8/get_jvm.conf /etc/zabbix/zabbix_agentd.d/
cd /etc/zabbix/script
chown root:root *
chmod +x *

修改python脚本中的常量

代码语言:javascript
复制
vi discover-jvm.py

这个常量是java进程存活时长阈值,当一个java进程存活时间大于此值时,才会被zabbix视为监控对象。此值的单位为秒。

代码语言:javascript
复制
# watchlook the jvm process or not
jvm_alive_time = 600
代码语言:javascript
复制
vi get-jvm-gc.py
代码语言:javascript
复制
# zabbix-server config
zbserver = '192.168.4.37' # zabbix server的ip
zbport = 10051            # zabbix server的端口
# JDK config
JAVA_HOME = '/usr/share/java-1.8.0' #jdk1.8的根目录
# which jstat options you need
methods = ['gc','gccapacity','gcnew','gcnewcapacity','gcold','gcoldcapacity','gcmetacapacity','gcutil'] # jstat命令的参数,可按照自己的需求修改
#methods = ['gc','gccapacity']

3. 安装python依赖库

代码语言:javascript
复制
# 安装pip工具与脚本中的依赖包
python get-pip.py
pip install -r requirements.txt

4. 修改zabbix-agent机器配置

4.1 关闭selinux

关于selinux的关闭方法,之前https://cloud.tencent.com/developer/article/1644589 有讲,不会的请看这篇。

4.2 添加防火墙规则

代码语言:javascript
复制
firewall-cmd --zone=public --add-port=10050/tcp --permanent
firewall-cmd --reload

4.3 对get-jvm-gc.py脚本提权

代码语言:javascript
复制
vi /etc/sudoers
代码语言:javascript
复制
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
zabbix  ALL=(ALL)       NOPASSWD:/etc/zabbix/script/get-jvm-gc.py

5. 模板导入与自动发现规则配置

5.1 模板导入

导入模板配置文件jvm8-template-auto-discover.xml.

5.2 zabbix_agentd.conf文件修改

代码语言:javascript
复制
EnableRemoteCommands=1 # 允许执行远程命令
Server=0.0.0.0/0 # 允许zabbix-server链接,这里设置的是允许所有机器链接
ServerActive=192.168.4.37 # zabbix-server ip
# Hostname= #注释掉Hostname
UnsafeUserParameters=1 # 允许用户参数中有特殊字符

5.3 自动发现配置

创建自动发现规则

这里监控的是192.169.4.0/255的所有机器

5.4 自动注册配置

创建自动注册行为

这里自动注册的作用是,当发现一台可以ping通的机器后,zabbix会自动以这台机器的hostname在zabbix中创建一个host。并关联jvm8-template-auto-discover, Template OS Linux两个模板。

6. 效果展示

启动zabbix-agent

代码语言:javascript
复制
systemctl restart zabbix-agent

zabbix-server只要能ping通这台服务器就会自动创建好host。并且自动关联jvm8-template-auto-discover, Template OS Linux两个模板。因为当前监控机器中并没有运行了10分钟以上java进程,所以jvm8-template-auto-discover不会创建对应进程的监控项。

现在我们启动一个java进程。

代码语言:javascript
复制
java -jar simple-example-0.0.1-SNAPSHOT-jar-with-dependencies.jar &

java代码为

代码语言:javascript
复制
package com.cosmo.simpleexample;

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) throws InterruptedException {
        List<String> a = new ArrayList<String>();
        for(;;) {
            for(int j=0;j<100;j++) {
                a.add("abc"+j);
                Thread.sleep(10);
            }
            a.clear();
        }
    }
}

项目为:https://github.com/chaoxxx/simple-example.git

等待一段时间后,发现host中多了很多监控项

数据也被采集了回来

关于监控项的含义请对照此篇文章。https://www.cnblogs.com/yjd_hycf_space/p/7755633.html

作者:cosmozhu --90后的老父亲,专注于保护地球的程序员

个人网站:https://www.cosmozhu.fun

欢迎转载,转载时请注明出处。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 模板使用环境
  • 2. 下载模板与脚本
  • 3. 安装python依赖库
  • 4. 修改zabbix-agent机器配置
    • 4.1 关闭selinux
      • 4.2 添加防火墙规则
        • 4.3 对get-jvm-gc.py脚本提权
        • 5. 模板导入与自动发现规则配置
          • 5.1 模板导入
            • 5.2 zabbix_agentd.conf文件修改
              • 5.3 自动发现配置
                • 5.4 自动注册配置
                • 6. 效果展示
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档