分布式应用:Zabbix监控Tomcat

news2024/11/24 19:43:06

目录

一、理论

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 -y

Systemctl start tomcat

cd /var/lib/tomcat/webapps

mkdir test

cd 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个配置参数:

启动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' ]];then
   echo "0"  #表示tomcat启动中
else
   echo "1"  #表示tomcat未启动
fi


#添加权限
chmod 777 /opt/tomcat.sh

添加可识别配置文件

vim zabbix_agent2.conf

UserParameter=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

 成功

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/870974.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

模型性能的主要指标

主要参数 ROC 曲线和混淆矩阵都是用来评估分类模型性能的工具 ROC曲线&#xff08;Receiver Operating Characteristic curve&#xff09;&#xff1a; ROC曲线描述了当阈值变化时&#xff0c;真正类率&#xff08;True Positive Rate, TPR&#xff09;和假正类率&#xff0…

SAP 收藏夹Favorites介绍,收藏夹导入/导出功能

作为SAP用户&#xff0c;经常需要使用一些事务代码T-Code, 很多时候会因为不常用其中的一些遗忘这个功能&#xff0c;所以这时候分类收藏好不同Module的事务代码到收藏夹里是一个不错的选择。 经常面临的一个场景就是需要变换系统环境&#xff0c;比如从Client A01,去到Client…

springcloud 基础

SprinbCloud微服务简介 架构发展历史 SpringBoot由baiPivotal团队在2013年开始研发、2014年4月发布第一个du版本的全新开源的轻量级框架。 它基zhi于Spring4.0设计&#xff0c;不dao仅继承了Spring框架原有的优秀特性&#xff0c;而且还通过简化配置来进一步简化了Spring应用…

QIIME 2教程. 11元数据Metadata(2023.5)

QIIME 2用户文档. 11元数据 Metadata in QIIME 2 https://docs.qiime2.org/2023.5/tutorials/metadata/ 注&#xff1a;此实例需要一些基础知识&#xff0c;要求完成本系列文章前两篇内容&#xff1a;《1简介和安装Introduction&Install》和4《人体各部位微生物组分析Movin…

【硬件突击 电路】

文章目录 1. 电阻&#xff08;Resistor&#xff09;&#xff1a;2. 电容&#xff08;Capacitor&#xff09;&#xff1a;3. 电感&#xff1a;4、 RC、RL、RLC电路结构及工作原理基尔霍夫定律基尔霍夫电流定律&#xff08;KCL&#xff09;基尔霍夫电压定律&#xff08;KVL&#…

【舌尖优省PLUS】美团、饿了么外卖免费领红包,尽情享受美食与省钱!

家人们&#xff01;我昨天刚开发完并上线了一个超棒的外卖免费领红包的小程序&#xff0c;它叫做【舌尖优省PLUS】&#xff01;如果你喜欢美食&#xff0c;还想省下一些钱&#xff0c;那这个小程序绝对不能错过&#xff01; 在【舌尖优省PLUS】上&#xff0c;你可以通过简单的…

react 生命周期方法

组件的生命周期 每个组件都包含 “生命周期方法”&#xff0c;你可以重写这些方法&#xff0c;以便于在运行过程中特定的阶段执行这些方法。你可以使用此生命周期图谱作为速查表。在下述列表中&#xff0c;常用的生命周期方法会被加粗。其余生命周期函数的使用则相对罕见。 挂…

第4章:决策树

停止 当前分支样本均为同一类时&#xff0c;变成该类的叶子节点。当前分支类型不同&#xff0c;但是已经没有可以用来分裂的属性时&#xff0c;变成类别样本更多的那个类别的叶子节点。当前分支为空时&#xff0c;变成父节点类别最多的类的叶子节点。 ID3 C4.5 Cart 过拟合 缺…

springcloud3 sleuth实现链路状态监控

一 slueth的介绍 1.1 slueth的作用 在微服务框架中&#xff0c;一个由客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的请求结果&#xff0c;每一个阶段请求都会形成一条复杂的分布式调用链路&#xff0c;链路中任何一环出现高延时或者错误都会引起…

通讯协议038——全网独有的OPC HDA知识一之聚合(七)最小值

本文简单介绍OPC HDA规范的基本概念&#xff0c;更多通信资源请登录网信智汇(wangxinzhihui.com)。 本节旨在详细说明HDA聚合的要求和性能。其目的是使HDA聚合标准化&#xff0c;以便HDA客户端能够可靠地预测聚合计算的结果并理解其含义。如果用户需要聚合中的自定义功能&…

MySQL环境安装

文章目录 MySQL环境安装1. 卸载1.1 卸载不要的环境1.2 检查卸载系统安装包 2. 安装2.1 获取mysql官方yum源2.2 安装mysql的yum源2.3 安装mysql服务 3. 登录(1)(2)(3) 4. 配置my.cnf MySQL环境安装 说明&#xff1a; 安装与卸载中&#xff0c;用户全部切换成为root&#xff0c…

基于YOLOv8+PyQt5开发的行人过马路危险行为检测告警系统(附数据集和源码下载)

系列文章目录 文章目录 系列文章目录前言欢迎来到我的博客&#xff01;我很高兴能与大家分享关于基于YOLOv8的行人过马路危险行为检测告警系统的内容。 一、系统特点1. 采用最新最优秀的目标检测算法YOLOv82. 系统分别基于PyQt5开发了两种GUI图形界面&#xff0c;供大家学习使用…

ruoyi-vue-pro yudao 项目bpm模块启用及相关SQL脚本

目前ruoyi-vue-pro 项目虽然开源&#xff0c;但是bpm模块被屏蔽了&#xff0c;查看文档却要收费 199元&#xff08;知识星球&#xff09;&#xff0c;价格有点太高了吧。 分享下如何启用 bpm 模块&#xff0c;顺便贴上sql相关脚本。 一、启用模块 修改根目录 pom.xml 启用模…

Day 29 C++ STL- 函数对象(Function Object)(仿函数)

文章目录 函数对象概念概念本质 函数对象使用特点示例 谓词——返回bool类型的仿函数谓词概念一元谓词——operator()参数只有一个的谓词二元谓词——operator()参数只有俩个的谓词 内建函数对象&#xff08;Builtin Function Objects&#xff09;内建函数对象概念注意算术仿函…

Flowable-边界事件-补偿边界事件

目录 定义图形标记XML内容使用示例演示demo 定义 补偿边界事件可以为所依附的节点附加补偿处理器&#xff0c;通过关联连接到补偿处理器&#xff08;compensation handler&#xff09;。补偿边界事件会在流程活动完成后根据情况&#xff08;事务取消或者补偿中间事件触发&…

WAVE SUMMIT2023六大分会场同步开启,飞桨+文心大模型加速区域产业智能化!

由深度学习技术及应用国家工程研究中心主办、百度飞桨和文心大模型承办的WAVE SUMMIT深度学习开发者大会2023将于8月16日重磅来袭&#xff01;届时上海、广州、深圳、成都、南昌和宁波六大分会场将同步开启&#xff01; 分会汇聚区域产业大咖、科研机构专家、知名学者和技术大牛…

股票量化分析工具QTYX使用攻略——盘口异动实时监测(更新2.6.8)

QTYX简介‍‍‍ 股票量化交易系统QTYX是一个即可以用于学习&#xff0c;也可以用于实战炒股分析的系统。 分享QTYX系统目的是提供给大家一个搭建量化系统的模版&#xff0c;最终帮助大家搭建属于自己的系统。因此我们提供源码&#xff0c;可以根据自己的风格二次开发。 关于QTY…

研究机构:PayPal稳定币PYUSD有望成为「数字资产」的重要用例

作者&#xff1a;Greg Cipolaro&#xff0c;NYDIG 全球研究主管 编译&#xff1a;WEEX 唯客 本文主要探讨两个话题&#xff1a;1. 过去两周&#xff0c;Crypto ETF 的申请数量激增&#xff0c;它们的审核流程是怎样的&#xff1f;2. 金融科技巨头 PayPal 已推出自己的稳定币 PY…

零代码编程:用ChatGPT对Excel文件批量重命名

文件夹下面有几百个Excel文件&#xff0c;希望去掉开头的“【企查查】专利-”&#xff0c;去掉结尾的电话&#xff0c;然后在后面统一加上“发明专利列表”这几个字。 可以在ChatGPT中这样输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;要完成一个文件标题重命名…

UnrealEngine - 网络同步之连接篇

1 连接过程 - 握手 传统的 C/S 架构下&#xff0c;Client 和 Server 通常会建立一条抽象的 Connection&#xff0c;用来进行两端的通信。 UE 的官方文档中提供了 Client 连接到 Server 的示例 &#xff0c;简单来说分为如下几步&#xff1a; 打包构建好 Client 和 Server 进程…