首页 > 其他分享 >web server apache tomcat11-21-monitor and management 监控与管理

web server apache tomcat11-21-monitor and management 监控与管理

时间:2024-04-25 18:24:49浏览次数:29  
标签:web management monitor sun Dcom manager jmxremote server

前言

整理这个官方翻译的系列,原因是网上大部分的 tomcat 版本比较旧,此版本为 v11 最新的版本。

开源项目

从零手写实现 tomcat minicat 别称【嗅虎】心有猛虎,轻嗅蔷薇。

系列文章

web server apache tomcat11-01-官方文档入门介绍

web server apache tomcat11-02-setup 启动

web server apache tomcat11-03-deploy 如何部署

web server apache tomcat11-04-manager 如何管理?

web server apache tomcat11-06-Host Manager App -- Text Interface

web server apache tomcat11-07-Realm Configuration

web server apache tomcat11-08-JNDI Resources

web server apache tomcat11-09-JNDI Datasource

web server apache tomcat11-10-Class Loader

...

简介

监控是系统管理的关键方面。查看运行中的服务器,获取一些统计信息或重新配置应用程序的某些方面都是日常管理任务。

启用 JMX 远程

注意:只有在您要远程监视 Tomcat 时才需要此配置。如果您打算使用与 Tomcat 运行的相同用户在本地监视它,则不需要此配置。

Oracle 网站包含了有关选项列表以及如何在 Java 11 上配置 JMX 远程的信息:Java 11 JMX 远程配置

以下是 Java 11 的快速配置指南:

在 Tomcat 的 setenv.bat 脚本中添加以下参数(有关详细信息,请参阅 RUNNING.txt)。
注意:此语法适用于 Microsoft Windows。命令必须在同一行上。它被包装以增加可读性。如果 Tomcat 作为 Windows 服务运行,请使用其配置对话框为服务设置 Java 选项。对于 Linux、MacOS 等,请从行的开头删除 "set "。

set CATALINA_OPTS=-Dcom.sun.management.jmxremote.port=%my.jmx.port%
  -Dcom.sun.management.jmxremote.rmi.port=%my.rmi.port%
  -Dcom.sun.management.jmxremote.ssl=false
  -Dcom.sun.management.jmxremote.authenticate=false

如果不设置 com.sun.management.jmxremote.rmi.port,则 JSR 160 JMX-Adaptor 将随机选择一个端口,这将使得配置防火墙以允许访问变得困难。

如果需要 TLS:

更改并添加以下内容:

  -Dcom.sun.management.jmxremote.ssl=true
  -Dcom.sun.management.jmxremote.registry.ssl=true

要配置协议和/或密码套件,请使用:

  -Dcom.sun.management.jmxremote.ssl.enabled.protocols=%my.jmx.ssl.protocols%
  -Dcom.sun.management.jmxremote.ssl.enabled.cipher.suites=%my.jmx.cipher.suites%

对于客户端证书身份验证,请使用:

  -Dcom.sun.management.jmxremote.ssl.need.client.auth=%my.jmx.ssl.clientauth%

如果需要授权(强烈建议始终使用身份验证的 TLS):

更改并添加以下内容:

  -Dcom.sun.management.jmxremote.authenticate=true
  -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password
  -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access

编辑访问授权文件 $CATALINA_BASE/conf/jmxremote.access:

monitorRole readonly
controlRole readwrite

编辑密码文件 $CATALINA_BASE/conf/jmxremote.password:

monitorRole tomcat
controlRole tomcat

提示:密码文件应该是只读的,并且只能被 Tomcat 运行的操作系统用户访问。

或者,您可以使用以下配置 JAAS 登录模块:

  -Dcom.sun.management.jmxremote.login.config=%login.module.name%

如果需要指定用于发送到客户端的 RMI 存根的主机名(例如,因为必须使用的公共主机名与本地主机名不同),则可以设置:

set CATALINA_OPTS=-Djava.rmi.server.hostname

如果需要为 JMX 服务绑定到的特定接口,请设置:

set CATALINA_OPTS=-Dcom.sun.management.jmxremote.host

使用 JMX 远程 Ant 任务管理 Tomcat

为了简化 Ant 中的 JMX 使用,提供了一组可用于 antlib 的任务。

antlib:将 catalina-ant.jar 从 $CATALINA_HOME/lib 复制到 $ANT_HOME/lib。

以下示例显示了 JMX Accessor 的用法:

注意:这里对 name 属性值进行了包装以增加可读性。它必须全部在同一行上,没有空格。

<project name="Catalina Ant JMX"
      xmlns:jmx="antlib:org.apache.catalina.ant.jmx"
      default="state"
      basedir=".">
  <property name="jmx.server.name" value="localhost" />
  <property name="jmx.server.port" value="9012" />
  <property name="cluster.server.address" value="192.168.1.75" />
  <property name="cluster.server.port" value="9025" />

  <target name="state" description="Show JMX Cluster state">
    <jmx:open
      host="${jmx.server.name}"
      port="${jmx.server.port}"
      username="controlRole"
      password="tomcat"/>
    <jmx:get
      name=
"Catalina:type=IDataSender,host=localhost,
senderAddress=${cluster.server.address},senderPort=${cluster.server.port}"
      attribute="connected"
      resultproperty="IDataSender.backup.connected"
      echo="false"
    />
    <jmx:get
      name="Catalina:type=ClusterSender,host=localhost"
      attribute="senderObjectNames"
      resultproperty="senderObjectNames"
      echo="false"
    />
    <!-- get current maxActiveSession from ClusterTest application
       echo it to Ant output and store at
       property <em>clustertest.maxActiveSessions.original</em>
    -->
    <jmx:get
      name="Catalina:type=Manager,context=/ClusterTest,host=localhost"
      attribute="maxActiveSessions"
      resultproperty="clustertest.maxActiveSessions.original"
      echo="true"
    />
    <!-- set maxActiveSession to 100
    -->
    <jmx:set
      name="Catalina:type=Manager,context=/ClusterTest,host=localhost"
      attribute="maxActiveSessions"
      value="100"
      type="int"
    />
    <!-- get all sessions and split result as delimiter <em>SPACE</em> for easy
       access all session ids directly with Ant property sessions.[0..n].
    -->
    <jmx:invoke
      name="Catalina:type=Manager,context=/ClusterTest,host=localhost"
      operation="listSessionIds"
      resultproperty="sessions"
      echo="false"
      delimiter=" "
    />
    <!-- Access session attribute <em>Hello</em> from first session.
    -->
    <jmx:invoke
      name="Catalina:type=Manager,context=/ClusterTest,host=localhost"
      operation="getSessionAttribute"
      resultproperty="Hello"
      echo="false"
    >
      <arg value="${sessions.0}"/>
      <arg value="Hello"/>
    </jmx:invoke>
    <!-- Query for all application manager.of the server from all hosts
       and bind all attributes from all found manager MBeans.
    -->
    <jmx:query
      name="Catalina:type=Manager,*"
      resultproperty="manager"
      echo="true"
      attributebinding="true"
    />
    <!-- echo the create properties -->
<echo>
senderObjectNames: ${senderObjectNames.0}
IDataSender.backup.connected: ${IDataSender.backup.connected}
session: ${sessions.0}
manager.length: ${manager.length}
manager.0.name: ${manager.0.name}
manager.1.name: ${manager.1.name}
hello: ${Hello}
manager.ClusterTest.0.name: ${manager.ClusterTest.0.name}
manager.ClusterTest.0.activeSessions: ${manager.ClusterTest.0.activeSessions}
manager.ClusterTest.0.counterSend_EVT_SESSION_EXPIRED:
 ${manager.ClusterTest.0.counterSend_EVT_SESSION_EXPIRED}
manager.ClusterTest.0.counterSend_EVT_GET_ALL_SESSIONS:
 ${manager.ClusterTest.0.counterSend_EVT_GET_ALL_SESSIONS}
</echo>

  </target>

</project>

标签:web,management,monitor,sun,Dcom,manager,jmxremote,server
From: https://www.cnblogs.com/houbbBlogs/p/18158318

相关文章

  • Dynamics 365 F&O and firewalls - monitor Azure IP ranges
    Contents  hide 1 AzureIPRanges:canwemonitorthem?2 Myproposal:anAzurefunction2.1 Authentication2.2 Thefunction2.3 Environmentvariables2.4 HTTPcall2.5 Functionresponse3 Usingthefunction4 Let’stestit!4.1 Subsc......
  • 网络拓扑—WEB-IIS服务搭建
    目录WEB-IIS服务搭建网络拓扑配置网络IISPC安装IIS服务配置IIS服务(默认站点)PC机访问网页配置IIS服务(新建站点)PC机访问网页WEB-IIS服务搭建网络拓扑//交换机忽略不计IIS服务IP:192.168.1.1PC机IP:192.168.1.2配置网络IISPC安装IIS服务在192.168.1.1的机子上安装下面跟......
  • 如何查看Vue CLI中webpack的默认配置
    这里使用terser-webpack-plugin举例说明,在VueCLI项目中,terser-webpack-plugin 插件的默认配置通常是隐藏且封装的,因为VueCLI会根据项目需求自动配置webpack。如果你想查看terser-webpack-plugin的默认配置,你可以尝试以下方法:通过检查node_modules/terser-webpack-plugin/di......
  • Web Component addEventListener .bind(this)的函数带参数引起的报错
     一开始这样写:  this.shadowRoot.querySelector('.prev').addEventListener('click',this.moveSlide(1).bind(this));报错:UncaughtTypeError:Cannotreadpropertiesofundefined(reading'bind')    以为是前面的DOM获取不对,但是怎么改都不对,网上查询后......
  • 【Web安全之机器学习】①分析邮箱数据
    Enron数据集:https://www2.aueb.gr/users/ion/data/enron-spam/Enron(安然公司)在2001年宣告破产之前,拥有约21000名雇员,曾是世界上最大的电力、天然气以及电讯公司之一,2000年披露的营业额达1010亿美元之巨。公司连续六年被财富杂志评选为“美国最具创新精神公司”,然而真正使Enron公......
  • Converge: QoE-driven Multipath Video Conferencing over WebRTC 概略
    这是一片2023sigcomm的文章。论文指出多摄像头(multiplecamera)和高分辨率(highresolution)场景下,视频会议的QoE还有提升空间,而作者将提升QoE的目光转到多路传输(multipath)上。所以总体来看这是一篇利用多路传输来优化视频会议体验的文章。常用的多路协议包括MPTCP,MPQUIC,MPRTP经过......
  • web安全-SQL注入(sqli)
    web安全-SQL注入(sqli)第一关基于报错的单引号字符型GET注入查看源码单引号,确认存在注入点:http://127.0.0.1/sqli/Less-1/?id=1'查询字段数:从1尝试到4,3没报错,4报错说明字段数为3http://127.0.0.1/sqli/Less-1/?id=1'orderby1,2,3,4--+因为这里有回显,所以使用union......
  • [MDP.BlazorCore] 快速建立跨Web、App執行的BlazorApp專案
    團隊資源受限的時候,使用Blazor開發應用系統,只需開發一份程式碼及使用一種程式語言,就同時產出Web跟App應用系統。本篇文章,紀錄使用MDP.BlazorCore所提供的樣板,快速建立跨Web、App執行的BlazorApp專案。為自己留個紀錄,也希望能幫助到有需要的開發人員。.安裝指令:dotnetnewinstal......
  • CISCN2023初赛-web复现
    Unzip       简单的软链接,都玩烂了。先创个软链接连接到/var/www/html,然后再创个同名文件夹,在这个文件夹下写马,传上去后等效在/var/www/html上写马,直接连接读flag就行了。deserbugjava审计。很显然的反序列化,bugstr传参。lib中出了hutool还有CC3.2.2,但CC自......
  • PlayerSettings.WebGL.emscriptenArgs设置无效的问题
    1)PlayerSettings.WebGL.emscriptenArgs设置无效的问题2)java.lang.NoSuchMethodError的不明崩溃问题3)UE电影摄像机旋转问题4)Android设备游戏切后台后唤起,有概率变卡且黑屏这是第383篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更......