当前位置: 首页 > news >正文

分布式应用:Zabbix监控Tomcat

目录

一、理论

1.Zabbix监控Tomcat

二、实验

1.Zabbix监控Tomcat

三、问题

1.获取软件包失败

 2.tomcat 配置 JMX remote monitor不生效

 3.Zabbix客户端日志报错


一、理论

1.Zabbix监控Tomcat

(1)环境

zabbix服务端:192.168.204.214

zabbix客户端:192.168.204.215

原理:

(2)客户端安装tomcat(yum方式)

yum install tomcat -ySystemctl start tomcatcd /var/lib/tomcat/webappsmkdir testcd test

(3)添加动态网页内容

vim index.jsp                                                                   # 添加动态页面内容:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><html><head><title>test</title></head><body><% out.println("动态页面:test tomcat01");%></body></html>#页面输出内容为test tomcat01,tomcat02服务器上则将01改为02方便查看实验效果#创建动态资源页面

(3)修改配置
 

vim /etc/tomcat/server.xml
#修改主配置文件内容125行,原有内容不需要更改,对比此段内容添加即可<Host name="localhost"  appBase="webapps"unpackWARs="true" autoDeploy="true"xmlNamespaceAware="false"><Context docBase="/var/lib/tomcat/webapps/test"path="" reloadable="true" />#指定自己的tomcat页面访问文件路径

(4)重新启动

systemctl restart tomcat

(5)服务端器安装zabbix-java-gateway

wget https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-java-gateway-4.0.14-1.el7.x86_64.rpm

(6)安装zabbix-java-gateway

 yum -y localinstall zabbix-java-gateway-4.0.14-1.el7.x86_64.rpm

(7)编辑gateway配置文件

vim /etc/zabbix/zabbix_java_gateway.conf

去掉LISTEN_IP、LISTEN_PORT(监听端口)、START_POLLERS(进程数)的注释符号

LISTEN_IP定义被监控机器的地址,不指定默认监听全部机器 编辑server配置文件

vim /etc/zabbix/zabbix_server.conf

定义以下3个配置参数:

JavaGateway=192.168.204.214JavaGatewayPort=10052StartJavaPollers=5

启动zabbix-java-gateway服务:

 systemctl start zabbix-java-gateway

重启zabbix-server服务:

systemctl restart zabbix-server

(4)查看监听端口

netstat -lntp |grep java

(5)开启JMX

客户端器编辑tomcat配置文件

vim /usr/libexec/tomcat/server

添加以下内容:

CATALINA_OPTS="$CATALINA_OPTS \-Dcom.sun.management.jmxremote \-Dcom.sun.management.jmxremote.port=8008 \-Dcom.sun.management.jmxremote.ssl=false \-Djava.rmi.server.hostname=192.168.204.215 \-Dcom.sun.management.jmxremote.authenticate=false"

hostname定义客户端地址,端口8008(默认12345)

(6)脚本、重启tomcat:

脚本

vim /opt/tomcat.sh#!/bin/bash
a=`netstat -natp |grep 8080|awk '{print $6}'|grep 'LISTEN'`
if [[ $a = 'LISTEN' ]];thenecho "0"  #表示tomcat启动中
elseecho "1"  #表示tomcat未启动
fi#添加权限
chmod 777 /opt/tomcat.sh

添加可识别配置文件

vim zabbix_agent2.confUserParameter=tomcat.status,source /opt/tomcat.sh
#实现对脚本的监控chmod +s /bin/nestat
#加上权限,避免netstat在服务端报错

验证

zabbix_get -s '192.168.204.215' -p 10050 -k 'tomcat.status'

重启

systemctl restart tomcat

(7)查看监听端口9999

netstat -lntp |grep 8008

(8)进入zabbix前端页面添加主机

与普通情况添加监控主机不同,监控B机器的tomcat需要配置JMX接口 模板链接JMX相关的两个模板:

Template App Apache Tomcat JMX

Template App Generic Java JMX

当JMX图标变绿即表示配置成功

二、实验

1.Zabbix监控Tomcat

(1)安装

(2) 启动

(3)设置文件

 

(4)监听端口

 (5)安装zabbix-java-gateway

下载

 安装zabbix-java-gateway

(6) 编辑gateway配置文件

 去掉LISTEN_IP、LISTEN_PORT(监听端口)、START_POLLERS(进程数)的注释符号

 LISTEN_IP定义被监控机器的地址,不指定默认监听全部机器

(7) 编辑server配置文件

 定义以下3个配置参数:

 (8)启动zabbix-java-gateway服务

 (9) 重启zabbix-server服务

 (10)查看监听端口

(11)开启JMX

客户端器编辑tomcat配置文件

重启 监听端口

(12)脚本、重启tomcat

脚本

 赋权

 

重启

(13)验证

授权

验证

0是tomcat启动中

​​​​​​​

(14)进入zabbix前端页面添加主机

进入zabbix前端页面添加主机

与普通情况添加监控主机不同,监控B机器的tomcat需要配置JMX接口 模板链接JMX相关的两个模板:

Template App Apache Tomcat JMX

Template App Generic Java JMX

当JMX图标变绿即表示配置成功:

 

监控项

 

 

监控JVM

 

(15)自定义监控tomcat

三、问题

1.获取软件包失败

(1)报错

 (2)原因分析

证书过期

(3)解决方法

命令结尾附加

--no-check-certificate

成功

 2.tomcat 配置 JMX remote monitor不生效

(1)原因分析

centos 7 上的 tomcat 配置 JMX remote monitor,由于tomcat安装方法的不同,jmx 配置方法也有所不同

(2)解决方法

配置 $CATALINA_OPTS

打开tomcat启动文件 /usr/libexec/tomcat/server,在变量 $FLAGS 赋值语句下面添加:

CATALINA_OPTS="$CATALINA_OPTS \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=8008 \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname=192.168.204.215 \
-Dcom.sun.management.jmxremote.authenticate=true \
-Dcom.sun.management.jmxremote.password.file=/usr/share/tomcat/conf/jmxremote.password \
-Dcom.sun.management.jmxremote.access.file=/usr/share/tomcat/conf/jmxremote.access"

配置分析:

-Dcom.sun.management.jmxremote: 启用 jmxremote 功能;
-Dcom.sun.management.jmxremote.port=8008:jmxremote 监听端口,用于客户端连接,样例设为 8008;
-Dcom.sun.management.jmxremote.ssl=false:是否启用 SSL 连接,样例设为 false;
-Dcom.sun.management.jmxremote.authenticate=true:开启用户认证连接;
-Dcom.sun.management.jmxremote.password.file=/usr/share/tomcat/conf/jmxremote.password:认证用户密码文件,样例设为 /usr/share/tomcat/conf/jmxremote.password;
-Dcom.sun.management.jmxremote.access.file=/usr/share/tomcat/conf/jmxremote.access:认证用户权限配置文件,样例设为 /usr/share/tomcat/conf/jmxremote.access。如果不启用用户认证,将选项 Dcom.sun.management.jmxremote.authenticate 的值设为false,也无需再设置选项 Dcom.sun.management.jmxremote.password.file 和 Dcom.sun.management.jmxremote.access.file。

JMX 远程连接的用户认证文件
从 jre 的安装目录找到 jmxremote.access 和 jmxremote.password.template,复制到 $CATALINA_OPTS 中设置的认证文件位置,将 jmxremote.password.template 重命名为 jmxremote.password。

cp /usr/lib/jvm/jre/lib/management/jmxremote.access /usr/share/tomcat/conf/
cp /usr/lib/jvm/jre/lib/management/jmxremote.password.template /usr/share/tomcat/conf/jmxremote.password

jmxremote.access 文件末尾添加认证用户名和用户权限,示例中 jmxuser 为用户名,readwrite 为该用户的 jmx 权限:

jmxuser readwrite

jmxremote.password 文件末尾添加认证用户名和用户密码,示例中 jmxuser 为用户名,与 jmxremote.access 中一致,jmxpassword 为该用户的 jmx 远程连接密码:

jmxuser jmxpassword

最后,更改文件权限和属主:

cd /usr/share/tomcat/conf/
chmod 600 jmxremote.password jmxremote.access
chown tomcat.tomcat jmxremote.password jmxremote.access

firewalld 设置

可以直接关闭 firewalld:

systemctl stop firewalld
systemctl disable firewalld

或者针对 JMX 监听的端口(包括两个随机端口和选项 -Dcom.sun.management.jmxremote.port 指定的固定端口)设置开放规则。首先查看java 监听的端口:

ss -lnp | grep java

任何开放端口:

firewall-cmd --add-port=8008/tcp --add-port=<random-port-1>/tcp --add-port=<random-port-2>/tcp

重启 tomcat 后随机端口会变,这时候又要重新设置端口规则。

重启 tomcat,JMX 连接

使用 JDK 自带的 jconsole 或 VisualVM 连接 JVM Remote。

 3.Zabbix客户端日志报错

(1)报错

 (2)原因分析

因为使用了netstat -p参数。

权限问题,zabbix_agentd是zabbix用户启动的,默认不能执行netstat -p等命令,导致从服务器取到的自动发现脚本为空

(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
(3)解决方法 

为了方便普通用户执行一些特权命令,SUID/SGID程序允许普通用户以root身份暂时执行该程序,并在执行结束后再恢复身份。

chmod +s /bin/netstat

 成功

相关文章:

分布式应用:Zabbix监控Tomcat

目录 一、理论 1.Zabbix监控Tomcat 二、实验 1.Zabbix监控Tomcat 三、问题 1.获取软件包失败 2.tomcat 配置 JMX remote monitor不生效 3.Zabbix客户端日志报错 一、理论 1.Zabbix监控Tomcat &#xff08;1&#xff09;环境 zabbix服务端&#xff1a;192.168.204.214 …...

《起风了》C++源代码

使用方法 Visual Studio、Dev-C、Visual Studio Code等C/C创建一个 .cpp 文件&#xff0c;直接粘贴赋值即可。 #include <iostream> #include <Windows.h> #pragma comment(lib,"winmm.lib") using namespace std; enum Scale {Rest 0, C8 108, B7 …...

Grafana展示k8s中pod的jvm监控面板/actuator/prometheus

场景 为保障java服务正常运行&#xff0c;对服务的jvm进行监控&#xff0c;通过使用actuator组件监控jvm情况&#xff0c;使用prometheus对数据进行采集&#xff0c;并在Grafana展现。 基于k8s场景 prometheus数据收集 配置service的lable&#xff0c;便于prometheus使用labl…...

实例038 设置窗体在屏幕中的位置

实例说明 在窗体中可以设置窗体居中显示&#xff0c;本例通过设置窗体的Left属性和Top属性可以准确设置窗体的位置。运行本例&#xff0c;效果如图1.38所示。 技术要点 设置窗体在屏幕中的位置&#xff0c;可以通过设置窗体的属性来实现。窗体的Left属性表示窗体距屏幕左侧的…...

合成数据及其在AI领域中的作用

什么是合成数据&#xff1f; 合成数据是由人工创建而非从现实生活中获得的数据&#xff0c;它从机器学习对数据的需求发展而来。最初&#xff0c;为了精确训练AI模型&#xff0c;必须获得涵盖所有可能场景的训练数据。如果某个场景没有发生或未被获得&#xff0c;就没有相应的…...

Java内存区域(运行时数据区域)和内存模型(JMM)

Java 内存区域和内存模型是不一样的东西&#xff0c;内存区域是指 Jvm 运行时将数据分区域存储&#xff0c;强调对内存空间的划分。 而内存模型&#xff08;Java Memory Model&#xff0c;简称 JMM &#xff09;是定义了线程和主内存之间的抽象关系&#xff0c;即 JMM 定义了 …...

【HDFS】hdfs的count命令的参数详解

Usage: hadoop fs -count [-q] [-h] [-v] [-x] [-t [<storage type>]] [-u] [-e] [-s] <paths...

Lombok注解在JSON化中,JSON生成额外生成字段问题

问题描述&#xff1a; 定义如下对象 Dataclass A{private String A;public String getC() {return "abab";}} 执行如下逻辑 Autowiredprivate ObjectMapper objectMapper;Testpublic void test4() throws Exception {A a new A();a.setA("a");System.ou…...

docker中的jenkins之流水线构建

docker中的jenkins之流水线构建项目 1、用node这种方式&#xff08;因为我用pipeline方式一直不执行&#xff0c;不知道为什么&#xff09; 2、创建项目 创建两个参数&#xff0c;一个是宿主端口号&#xff0c;一个是docker中的端口号 3、使用git项目中的Jenkinsfile 4、编写…...

ES中倒排索引机制

在ES的倒排索引机制中有四个重要的名词&#xff1a;Term、Term Dictionary、Term Index、Posting List。 Term&#xff08;词条&#xff09;&#xff1a;词条是索引里面最小的存储和查询单元。一段文本经过分析器分析以后就会输出一串词条。一般来说英文语境中词条是一个单词&a…...

一生一芯4——使用星火应用商店在ubuntu下载QQ、微信、百度网盘

星火应用商店可以非常方便的完成一些应用的下载&#xff0c;下面是官方网址 http://spark-app.store/download 我使用的是intel处理器&#xff0c;无需下载依赖项&#xff0c;直接点击软件本体 我这里下载amd64,根据自己的处理器下载对应版本 sudo apt install ./spark-stor…...

编程练习(1)

目录 一.选择题 第一题&#xff1a; 第二题&#xff1a; 第三题&#xff1a; 第四题&#xff1a; 第五题&#xff1a; ​编辑 二.编程题 第一题&#xff1a; 第二题&#xff1a; 1.暴力方法&#xff1a; 2.数组法&#xff1a; 一.选择题 第一题&#xff1a; 解析&…...

pytorch安装VAE项目详解

安装VAE项目 一、 基本环境二、代码来源三、搭建conda环境四、下载数据集五、启动项目六、其他相关问题 一、 基本环境 工具版本号OSwin 11pycharm2020.1GPU3050 二、代码来源 github地址为&#xff1a; https://github.com/AntixK/PyTorch-VAE/blob/8700d245a9735640dda458d…...

SQL-每日一题【1517. 查找拥有有效邮箱的用户】

题目 表: Users 编写一个解决方案&#xff0c;以查找具有有效电子邮件的用户。 一个有效的电子邮件具有前缀名称和域&#xff0c;其中&#xff1a; 前缀 名称是一个字符串&#xff0c;可以包含字母&#xff08;大写或小写&#xff09;&#xff0c;数字&#xff0c;下划线 _ &…...

Python web实战之Django 的 WebSocket 支持详解

关键词&#xff1a;Python, Django, WebSocket, Web 如何使用 Django 实现 WebSocket 功能&#xff1f;本文将详细介绍 WebSocket 的概念、Django 的 WebSocket 支持以及如何利用它来创建动态、响应式的 Web 应用。 1. WebSocket 简介 1.1 什么是 WebSocket&#xff1f; 在 W…...

CDN(内容分发网络)

CDN的全称是 Content Delivery Network, 即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络&#xff0c;依靠部署在各地的边缘服务器&#xff0c;通过中心平台的负载均衡、内容分发、调度等功能模块&#xff0c;使用户就近获取所需内容&#xff0c;降低网络拥塞&a…...

前端高频面试题 Day01

文章目录 1. Map 和 Object 的不同API 不同以任意类型为 keyMap 是有序结构Map 很快WeakMap总结 2. Set 和数组的区别Set 元素不能重复API 不一样Set 是无序的&#xff0c;而数组是有序的 —— 这一点很少有人提到&#xff0c;却很关键&#xff01;&#xff01;&#xff01;Wea…...

『C语言初阶』第八章 -隐式类型转换规则

前言 今天小羊又来给铁汁们分享关于C语言的隐式类型转换规则&#xff0c;在C语言中类型转换方式可分为隐式类型转换和显式类型转换(强制类型转换)&#xff0c;其中隐式类型转换是由编译器自动进行&#xff0c;无需程序员干预&#xff0c;今天小羊课堂说的就是关于隐式类型转换…...

Fortinet数据中心防火墙及服务ROI超300%!Forrester TEI研究发布

近日&#xff0c;专注网络与安全融合的全球网络安全领导者 Fortinet&#xff08;NASDAQ&#xff1a;FTNT&#xff09;联合全球知名分析机构Forrester发布总体经济影响独立分析报告&#xff0c;详细阐述了在企业数据中心部署 FortiGate 下一代防火墙&#xff08;NGFW&#xff09…...

【vue】简洁优雅的火花线、趋势线

来由 在github发现个好看易用的vue趋势线组件&#xff0c;特此记录。 效果 趋势图生成后效果如上&#xff0c;线条为渐变色&#xff0c;可设置是否平滑。具体线条走势&#xff0c;根据数据动态生成。 使用 安装 npm i vuetrend -S 引入 import Vue from "vue"…...

【软件工程】数据流图/DFD概念符号/流程图分层/数据字典

【软件工程】数据流图/DFD概念符号/流程图分层/数据字典 目录 【软件工程】数据流图/DFD概念符号/流程图分层/数据字典 一、数据流图 ( DFD ) 简介 二、数据流图 ( DFD ) 概念符号 1、数据流 2、加工 ( 核心 ) 3、数据存储 4、外部实体 三、数据流图 ( DFD ) 分层 1、…...

时序预测 | MATLAB实现基于CNN卷积神经网络的时间序列预测-递归预测未来(多指标评价)

时序预测 | MATLAB实现基于CNN卷积神经网络的时间序列预测-递归预测未来(多指标评价) 目录 时序预测 | MATLAB实现基于CNN卷积神经网络的时间序列预测-递归预测未来(多指标评价)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 1.Matlab实现CNN卷积神经网络时间序列预测未…...

Python中的字符串与字符编码

Hello&#xff0c;这里是Token_w的博客&#xff0c;欢迎您的到来 今天文章讲解的是Python中的字符串与字符编码&#xff0c;其中有基础的理论知识讲解&#xff0c;也有实战中的应用讲解&#xff0c;希望对你有所帮助 整理不易&#xff0c;如对你有所帮助&#xff0c;希望能得到…...

图数据库_Neo4j学习cypher语言_使用CQL命令002_删除节点_删除属性_结果排序Order By---Neo4j图数据库工作笔记0006

然后我们再来看如何删除节点 可以看到首先 我们这里 比如我要删除张三 可以看到 match (n:student) where n.name = "张三" delete n 这样就是删除了student集合中,name是张三的节点 然后我们再来看 如何来删除关系 match (n:student)-[r]->(m:student) where…...

C语言学习笔记---数据的存储详解

C语言程序设计笔记---015 C语言数据的存储1、数据类型的意义1.1、unsigned与signed数据类型例程11.2、补码与原码相互转换例程2 2、大小端的介绍2.1、大小端的例程12.2、大小端的例程2 --- 判断当前编译器环境属于大端或小端 3、综合练习题探究数据的存储3.1、练习题13.2、练习…...

js中的常见事件(鼠标事件,键盘事件,表单事件......)

JavaScript中的事件(Event)是指在网页中发生的某些特定操作&#xff08;例如单击、加载页面等&#xff09;&#xff0c;可以被JavaScript代码捕获和处理。常见的事件有&#xff1a; 鼠标事件&#xff1a;单击&#xff08;click&#xff09;、双击&#xff08;dblclick&#xff…...

学校如何公布录取情况?源代码公布了

作为一名负责公布学生录取情况的老师&#xff0c;对于录取查询公布工作我们可以按照以下流程来进行公布&#xff1a; 1. 录取结果准备&#xff1a;首先&#xff0c;你需要确保录取结果的准确性和完整性。与招生办公室或相关部门核对录取名单&#xff0c;确保没有遗漏或错误。如…...

JAVA基础知识(一)——Java语言描述、变量和运算符

TOC(Java语言描述、变量和运算符) 一、JAVA语言描述 1.1 java语言描述 JDK、JRE、jVM三者之间的关系&#xff0c;以及JDK、JRE包含的主要结构有哪些&#xff1f; JDKJre java的开发工具&#xff08;javac.exe java.exe javadoc.exe&#xff09; jre jvmjava的核心类库 为什…...

时序预测 | MATLAB实现基于KNN K近邻的时间序列预测-递归预测未来(多指标评价)

时序预测 | MATLAB实现基于KNN K近邻的时间序列预测-递归预测未来(多指标评价) 目录 时序预测 | MATLAB实现基于KNN K近邻的时间序列预测-递归预测未来(多指标评价)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 基于KNN K近邻的时间序列预测-递归预测未来(多指标评价) …...

冉冉升起的星火,再度升级迎来2.0时代!

文章目录 前言权威性评测结果 星火大模型多模态功能插件功能简历生成文档问答PPT生成 代码能力 福利 前言 前几天从技术群里看到大家都在谈论《人工智能大模型体验报告2.0》里边的内容&#xff0c;抱着好奇和学习的态度把报告看了一遍。看完之后瞬间被里边提到的科大讯飞的星火…...