Table of Contents
コマンドインタフェースから JBossAS 7.x アプリケーションサーバの稼働情報収取得方法に
ついて検証してみた。主に以下の方法が存在する。
jboss-cli.shコマンドでサーバの設定情報やRuntime情報を取得する。- RESTful Management Interfaces HTTP通信でJSON形式で情報ヲ取得する。
- remoting-jmx インタフェースでMBeanサーバから情報を取得する。
1と2の情報源が一緒です。取れる情報が次のようなイメージ、用途に応じて選ぶことになると思 います。
+-------------+ | jboss-cli | | +---------+-----+ | | | | | | | JMX | | | | | | +---------+-----+ +-------------+
1 jboss-cli.sh 方式
1.1 JBoss管理インスタンスへ接続する
$ jboss-cli.sh -c controller=<hostname:port>
1.2 JVMスレッドプール情報取得
[standalone@localhost:9999 /] /core-service=platform-mbean/type=threading:read-resource(recursive=true, include-runtime=true)
{
"outcome" => "success",
"result" => {
"all-thread-ids" => [
137L,
.......
2L
],
"thread-contention-monitoring-supported" => true,
"thread-cpu-time-supported" => true,
"current-thread-cpu-time-supported" => true,
"object-monitor-usage-supported" => true,
"synchronizer-usage-supported" => true,
"thread-contention-monitoring-enabled" => false,
"thread-cpu-time-enabled" => true,
"thread-count" => 36,
"peak-thread-count" => 78,
"total-started-thread-count" => 130L,
"daemon-thread-count" => 14,
"current-thread-cpu-time" => 5399864L,
"current-thread-user-time" => 0L,
"object-name" => "java.lang:type=Threading"
}
}
[standalone@localhost:9999 /]
1.3 JVMメモリ情報取得
メモリ概要情報
[standalone@localhost:9999 /] /core-service=platform-mbean/type=memory:read-resource(recursive=true, include-runtime=true)
{
"outcome" => "success",
"result" => {
"heap-memory-usage" => {
"init" => 1366294528L,
"used" => 253812744L,
"committed" => 1320878080L,
"max" => 1321795584L
},
"non-heap-memory-usage" => {
"init" => 24313856L,
"used" => 62715312L,
"committed" => 63045632L,
"max" => 318767104L
},
"object-name" => "java.lang:type=Memory",
"object-pending-finalization-count" => 0,
"verbose" => false
}
}
[standalone@localhost:9999 /]
メモリ詳細情報
[standalone@localhost:9999 /] /core-service=platform-mbean/type=memory-pool:read-resource(recursive=true, include-runtime=true)
{
"outcome" => "success",
"result" => {"name" => {
"Eden_Space" => {
"name" => "Eden_Space",
"type" => "HEAP",
"valid" => true,
"memory-manager-names" => [
"MarkSweepCompact",
"Copy"
],
"usage-threshold-supported" => false,
"collection-usage-threshold-supported" => true,
"usage-threshold" => undefined,
"collection-usage-threshold" => 0L,
"usage" => {
"init" => 364445696L,
"used" => 227453064L,
"committed" => 364445696L,
"max" => 364642304L
},
"peak-usage" => {
"init" => 364445696L,
"used" => 364445696L,
"committed" => 364642304L,
"max" => 364642304L
},
"usage-threshold-exceeded" => undefined,
"usage-threshold-count" => undefined,
"collection-usage-threshold-exceeded" => false,
"collection-usage-threshold-count" => 0L,
"collection-usage" => {
"init" => 364445696L,
"used" => 0L,
"committed" => 364445696L,
"max" => 364642304L
},
"object-name" => "java.lang:type=MemoryPool,name=\"Eden Space\""
},
"Survivor_Space" => {
"name" => "Survivor_Space",
"type" => "HEAP",
"valid" => true,
"memory-manager-names" => [
"MarkSweepCompact",
"Copy"
],
"usage-threshold-supported" => false,
"collection-usage-threshold-supported" => true,
"usage-threshold" => undefined,
"collection-usage-threshold" => 0L,
"usage" => {
"init" => 45481984L,
"used" => 970896L,
"committed" => 45547520L,
"max" => 45547520L
},
"peak-usage" => {
"init" => 45481984L,
"used" => 24101280L,
"committed" => 45547520L,
"max" => 45547520L
},
"usage-threshold-exceeded" => undefined,
"usage-threshold-count" => undefined,
"collection-usage-threshold-exceeded" => false,
"collection-usage-threshold-count" => 0L,
"collection-usage" => {
"init" => 45481984L,
"used" => 970896L,
"committed" => 45547520L,
"max" => 45547520L
},
"object-name" => "java.lang:type=MemoryPool,name=\"Survivor Space\""
},
"Perm_Gen" => {
"name" => "Perm_Gen",
"type" => "NON_HEAP",
"valid" => true,
"memory-manager-names" => ["MarkSweepCompact"],
"usage-threshold-supported" => true,
"collection-usage-threshold-supported" => true,
"usage-threshold" => 0L,
"collection-usage-threshold" => 0L,
"usage" => {
"init" => 21757952L,
"used" => 57597424L,
"committed" => 57802752L,
"max" => 268435456L
},
"peak-usage" => {
"init" => 21757952L,
"used" => 57597424L,
"committed" => 57802752L,
"max" => 268435456L
},
"usage-threshold-exceeded" => false,
"usage-threshold-count" => 0L,
"collection-usage-threshold-exceeded" => false,
"collection-usage-threshold-count" => 0L,
"collection-usage" => {
"init" => 21757952L,
"used" => 55181008L,
"committed" => 55181312L,
"max" => 268435456L
},
"object-name" => "java.lang:type=MemoryPool,name=\"Perm Gen\""
},
"Code_Cache" => {
"name" => "Code_Cache",
"type" => "NON_HEAP",
"valid" => true,
"memory-manager-names" => ["CodeCacheManager"],
"usage-threshold-supported" => true,
"collection-usage-threshold-supported" => false,
"usage-threshold" => 0L,
"collection-usage-threshold" => undefined,
"usage" => {
"init" => 2555904L,
"used" => 5117888L,
"committed" => 5242880L,
"max" => 50331648L
},
"peak-usage" => {
"init" => 2555904L,
"used" => 5123264L,
"committed" => 5242880L,
"max" => 50331648L
},
"usage-threshold-exceeded" => false,
"usage-threshold-count" => 0L,
"collection-usage-threshold-exceeded" => undefined,
"collection-usage-threshold-count" => undefined,
"collection-usage" => undefined,
"object-name" => "java.lang:type=MemoryPool,name=\"Code Cache\""
},
"Tenured_Gen" => {
"name" => "Tenured_Gen",
"type" => "HEAP",
"valid" => true,
"memory-manager-names" => ["MarkSweepCompact"],
"usage-threshold-supported" => true,
"collection-usage-threshold-supported" => true,
"usage-threshold" => 0L,
"collection-usage-threshold" => 0L,
"usage" => {
"init" => 910884864L,
"used" => 36957616L,
"committed" => 910884864L,
"max" => 911605760L
},
"peak-usage" => {
"init" => 910884864L,
"used" => 36957616L,
"committed" => 910884864L,
"max" => 911605760L
},
"usage-threshold-exceeded" => false,
"usage-threshold-count" => 0L,
"collection-usage-threshold-exceeded" => false,
"collection-usage-threshold-count" => 0L,
"collection-usage" => {
"init" => 910884864L,
"used" => 36957616L,
"committed" => 910884864L,
"max" => 911605760L
},
"object-name" => "java.lang:type=MemoryPool,name=\"Tenured Gen\""
}
}}
}
[standalone@localhost:9999 /]
GCの実行状況
[standalone@localhost:9999 /] /core-service=platform-mbean/type=garbage-collector:read-resource(recursive=true, include-runtime=true)
{
"outcome" => "success",
"result" => {"name" => {
"MarkSweepCompact" => {
"collection-count" => 6L,
"collection-time" => 1183L,
"memory-pool-names" => [
"Eden_Space",
"Survivor_Space",
"Tenured_Gen",
"Perm_Gen"
],
"name" => "MarkSweepCompact",
"object-name" => "java.lang:type=GarbageCollector,name=MarkSweepCompact",
"valid" => true
},
"Copy" => {
"collection-count" => 13L,
"collection-time" => 3003L,
"memory-pool-names" => [
"Eden_Space",
"Survivor_Space"
],
"name" => "Copy",
"object-name" => "java.lang:type=GarbageCollector,name=Copy",
"valid" => true
}
}}
}
[standalone@localhost:9999 /]
1.4 データベース接続プール情報取得
[standalone@localhost:9999 /] /subsystem=datasources/data-source=ExampleDS/statistics=pool:read-resource(include-runtime=true, recursive=true)
{
"outcome" => "success",
"result" => {
"ActiveCount" => "0",
"AvailableCount" => "20",
"AverageBlockingTime" => "0",
"AverageCreationTime" => "0",
"CreatedCount" => "0",
"DestroyedCount" => "0",
"InUseCount" => "0",
"MaxCreationTime" => "0",
"MaxUsedCount" => "0",
"MaxWaitCount" => "0",
"MaxWaitTime" => "0",
"TimedOut" => "0",
"TotalBlockingTime" => "0",
"TotalCreationTime" => "0"
}
}
[standalone@localhost:9999 /]
1.5 JDBCステートメントキャッシュ情報
[standalone@localhost:9999 /] /subsystem=datasources/data-source=ExampleDS/statistics=jdbc:read-resource(include-runtime=true, recursive=true)
{
"outcome" => "success",
"result" => {
"PreparedStatementCacheAccessCount" => "0",
"PreparedStatementCacheAddCount" => "0",
"PreparedStatementCacheCurrentSize" => "0",
"PreparedStatementCacheDeleteCount" => "0",
"PreparedStatementCacheHitCount" => "0",
"PreparedStatementCacheMissCount" => "0"
}
}
[standalone@localhost:9999 /]
1.6 起動オプション、システム属性などの確認
[standalone@localhost:9999 /] /core-service=platform-mbean/type=runtime:read-resource(recursive=true, include-runtime=true)
{
"outcome" => "success",
"result" => {
"name" => "2147@localhost",
"vm-name" => "OpenJDK 64-Bit Server VM",
"vm-vendor" => "Oracle Corporation",
"vm-version" => "24.65-b04",
"spec-name" => "Java Virtual Machine Specification",
"spec-vendor" => "Oracle Corporation",
"spec-version" => "1.7",
"management-spec-version" => "1.2",
"class-path" => "/opt/jboss-eap-6.2/jboss-modules.jar",
"library-path" => "/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib",
"boot-class-path-supported" => true,
"boot-class-path" => "/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/lib/resources.jar:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/lib/rt.jar:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/lib/jsse.jar:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/lib/jce.jar:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/lib/charsets.jar:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/lib/rhino.jar:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/lib/jfr.jar:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/classes",
"input-arguments" => [
"-D[Standalone]",
"-XX:+UseCompressedOops",
"-Xms1303m",
"-Xmx1303m",
"-XX:MaxPermSize=256m",
"-Djava.net.preferIPv4Stack=true",
"-Djboss.modules.system.pkgs=org.jboss.byteman",
"-Djava.awt.headless=true",
"-Djboss.modules.metrics=true",
"-Dorg.apache.tomcat.util.ENABLE_MODELER=true",
"-Dorg.jboss.boot.log.file=/opt/jboss-eap-6.2/standalone/log/server.log",
"-Dlogging.configuration=file:/opt/jboss-eap-6.2/standalone/configuration/logging.properties"
],
"start-time" => 1412040330424L,
"system-properties" => {
"[Standalone]" => "",
"awt.toolkit" => "sun.awt.X11.XToolkit",
"catalina.home" => "/opt/jboss-eap-6.2/standalone/tmp",
"file.encoding" => "UTF-8",
"file.encoding.pkg" => "sun.io",
"file.separator" => "/",
"java.awt.graphicsenv" => "sun.awt.X11GraphicsEnvironment",
"java.awt.headless" => "true",
"java.awt.printerjob" => "sun.print.PSPrinterJob",
"java.class.path" => "/opt/jboss-eap-6.2/jboss-modules.jar",
"java.class.version" => "51.0",
"java.endorsed.dirs" => "/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/lib/endorsed",
"java.ext.dirs" => "/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/lib/ext:/usr/java/packages/lib/ext",
"java.home" => "/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre",
"java.io.tmpdir" => "/tmp",
"java.library.path" => "/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib",
"java.naming.factory.url.pkgs" => "org.jboss.as.naming.interfaces:org.jboss.ejb.client.naming",
"java.net.preferIPv4Stack" => "true",
"java.protocol.handler.pkgs" => "org.jboss.net.protocol|org.jboss.vfs.protocol",
"java.runtime.name" => "OpenJDK Runtime Environment",
"java.runtime.version" => "1.7.0_65-mockbuild_2014_07_16_06_06-b00",
"java.specification.name" => "Java Platform API Specification",
"java.specification.vendor" => "Oracle Corporation",
"java.specification.version" => "1.7",
"java.util.logging.manager" => "org.jboss.logmanager.LogManager",
"java.vendor" => "Oracle Corporation",
"java.vendor.url" => "http://java.oracle.com/",
"java.vendor.url.bug" => "http://bugreport.sun.com/bugreport/",
"java.version" => "1.7.0_65",
"java.vm.info" => "mixed mode",
"java.vm.name" => "OpenJDK 64-Bit Server VM",
"java.vm.specification.name" => "Java Virtual Machine Specification",
"java.vm.specification.vendor" => "Oracle Corporation",
"java.vm.specification.version" => "1.7",
"java.vm.vendor" => "Oracle Corporation",
"java.vm.version" => "24.65-b04",
"javax.management.builder.initial" => "org.jboss.as.jmx.PluggableMBeanServerBuilder",
"javax.xml.datatype.DatatypeFactory" => "__redirected.__DatatypeFactory",
"javax.xml.parsers.DocumentBuilderFactory" => "__redirected.__DocumentBuilderFactory",
"javax.xml.parsers.SAXParserFactory" => "__redirected.__SAXParserFactory",
"javax.xml.stream.XMLEventFactory" => "__redirected.__XMLEventFactory",
"javax.xml.stream.XMLInputFactory" => "__redirected.__XMLInputFactory",
"javax.xml.stream.XMLOutputFactory" => "__redirected.__XMLOutputFactory",
"javax.xml.transform.TransformerFactory" => "__redirected.__TransformerFactory",
"javax.xml.validation.SchemaFactory:http://www.w3.org/2001/XMLSchema" => "__redirected.__SchemaFactory",
"javax.xml.xpath.XPathFactory:http://java.sun.com/jaxp/xpath/dom" => "__redirected.__XPathFactory",
"jboss.home.dir" => "/opt/jboss-eap-6.2",
"jboss.host.name" => "localhost",
"jboss.modules.dir" => "/opt/jboss-eap-6.2/modules",
"jboss.modules.metrics" => "true",
"jboss.modules.system.pkgs" => "org.jboss.byteman",
"jboss.node.name" => "localhost",
"jboss.qualified.host.name" => "localhost",
"jboss.server.base.dir" => "/opt/jboss-eap-6.2/standalone",
"jboss.server.config.dir" => "/opt/jboss-eap-6.2/standalone/configuration",
"jboss.server.data.dir" => "/opt/jboss-eap-6.2/standalone/data",
"jboss.server.deploy.dir" => "/opt/jboss-eap-6.2/standalone/data/content",
"jboss.server.log.dir" => "/opt/jboss-eap-6.2/standalone/log",
"jboss.server.name" => "localhost",
"jboss.server.persist.config" => "true",
"jboss.server.temp.dir" => "/opt/jboss-eap-6.2/standalone/tmp",
"line.separator" => "
",
"logging.configuration" => "file:/opt/jboss-eap-6.2/standalone/configuration/logging.properties",
"module.path" => "/opt/jboss-eap-6.2/modules",
"org.apache.tomcat.util.ENABLE_MODELER" => "true",
"org.apache.xml.security.ignoreLineBreaks" => "true",
"org.jboss.boot.log.file" => "/opt/jboss-eap-6.2/standalone/log/server.log",
"org.jboss.resolver.warning" => "true",
"org.jboss.security.context.ThreadLocal" => "true",
"org.xml.sax.driver" => "__redirected.__XMLReaderFactory",
"os.arch" => "amd64",
"os.name" => "Linux",
"os.version" => "2.6.32-358.el6.x86_64",
"path.separator" => ":",
"sun.arch.data.model" => "64",
"sun.boot.class.path" => "/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/lib/resources.jar:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/lib/rt.jar:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/lib/jsse.jar:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/lib/jce.jar:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/lib/charsets.jar:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/lib/rhino.jar:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/lib/jfr.jar:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/classes",
"sun.boot.library.path" => "/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/lib/amd64",
"sun.cpu.endian" => "little",
"sun.cpu.isalist" => "",
"sun.io.unicode.encoding" => "UnicodeLittle",
"sun.java.command" => "/opt/jboss-eap-6.2/jboss-modules.jar -mp /opt/jboss-eap-6.2/modules -jaxpmodule javax.xml.jaxp-provider org.jboss.as.standalone -Djboss.home.dir=/opt/jboss-eap-6.2 -Djboss.server.base.dir=/opt/jboss-eap-6.2/standalone",
"sun.java.launcher" => "SUN_STANDARD",
"sun.jnu.encoding" => "UTF-8",
"sun.management.compiler" => "HotSpot 64-Bit Tiered Compilers",
"sun.os.patch.level" => "unknown",
"user.country" => "JP",
"user.dir" => "/root",
"user.home" => "/root",
"user.language" => "ja",
"user.name" => "root",
"user.timezone" => "Asia/Tokyo"
},
"uptime" => 11324677L,
"object-name" => "java.lang:type=Runtime"
}
}
[standalone@localhost:9999 /]
1.7 EJBスレッドプールの確認
[standalone@localhost:9999 /] /subsystem=ejb3/thread-pool=default:read-resource(include-runtime=true, recursive=true)
{
"outcome" => "success",
"result" => {
"active-count" => 0,
"completed-task-count" => 0L,
"current-thread-count" => 0,
"keepalive-time" => {
"time" => 100L,
"unit" => "MILLISECONDS"
},
"largest-thread-count" => 0,
"max-threads" => 10,
"name" => "default",
"queue-size" => 0,
"rejected-count" => 0,
"task-count" => 0L,
"thread-factory" => undefined
}
}
[standalone@localhost:9999 /]
1.8 トランザクション情報の確認
[standalone@localhost:9999 /] /subsystem=transactions:read-resource(include-runtime=true, recursive=true)
{
"outcome" => "success",
"result" => {
"default-timeout" => 300,
"enable-statistics" => false,
"enable-tsm-status" => false,
"hornetq-store-enable-async-io" => false,
"jdbc-action-store-drop-table" => false,
"jdbc-action-store-table-prefix" => undefined,
"jdbc-communication-store-drop-table" => false,
"jdbc-communication-store-table-prefix" => undefined,
"jdbc-state-store-drop-table" => false,
"jdbc-state-store-table-prefix" => undefined,
"jdbc-store-datasource" => undefined,
"jts" => false,
"node-identifier" => "1",
"number-of-aborted-transactions" => 0L,
"number-of-application-rollbacks" => 0L,
"number-of-committed-transactions" => 0L,
"number-of-heuristics" => 0L,
"number-of-inflight-transactions" => 0L,
"number-of-nested-transactions" => 0L,
"number-of-resource-rollbacks" => 0L,
"number-of-timed-out-transactions" => 0L,
"number-of-transactions" => 0L,
"object-store-path" => "tx-object-store",
"object-store-relative-to" => "jboss.server.data.dir",
"path" => "var",
"process-id-socket-binding" => undefined,
"process-id-socket-max-ports" => 10,
"process-id-uuid" => true,
"recovery-listener" => false,
"relative-to" => "jboss.server.data.dir",
"socket-binding" => "txn-recovery-environment",
"status-socket-binding" => "txn-status-manager",
"use-hornetq-store" => false,
"use-jdbc-store" => false,
"log-store" => {"log-store" => {
"type" => "default",
"transactions" => undefined
}}
}
}
[standalone@localhost:9999 /]
2 remoting-jmx 方式
JBossAS 7.x のJMX情報を参照するには $JBOSS_HOME/bin/jconsole.sh のGUIツールを利用す
るのが一般的だと思います。コマンドから参照するにはJDKのJMX APIを用いて自前のコードで
頑張るか。 jmxterm といゆツールを使うかです。ここでは後者について検証しました。
jmxterm でlocalhostのJBossASのJMX情報参照はOKで、リモートからは認証処理で失敗した。
2.1 JBossAS接続用のjmxterm起動スクリプト
jmxterm は ここ からダウンロードできる。
#!/bin/sh EAP_HOME=/opt/jboss-eap-6.2 HOST_URL=service:jmx:remoting-jmx://localhost:9999 java -classpath `dirname $0`/jmxterm-1.0-alpha-4-uber.jar:$EAP_HOME/bin/client/jboss-cli-client.jar org.codehaus.classworlds.uberjar.boot.Bootstrapper -l "$HOST_URL"
起動時のイメージ
# ./jmxterm.sh 9 30, 2014 12:42:18 午後 org.xnio.Xnio <clinit> INFO: XNIO Version 3.0.7.GA-redhat-1 9 30, 2014 12:42:18 午後 org.xnio.nio.NioXnio <clinit> INFO: XNIO NIO Implementation Version 3.0.7.GA-redhat-1 9 30, 2014 12:42:18 午後 org.jboss.remoting3.EndpointImpl <clinit> INFO: JBoss Remoting version 3.2.18.GA-redhat-1 Welcome to JMX terminal. Type "help" for available commands. $>
リモートから接続する場合、認証でエラー
$ ./jmxterm.sh 9 30, 2014 12:43:31 午後 org.xnio.Xnio <clinit> INFO: XNIO Version 3.0.7.GA-redhat-1 9 30, 2014 12:43:31 午後 org.xnio.nio.NioXnio <clinit> INFO: XNIO NIO Implementation Version 3.0.7.GA-redhat-1 9 30, 2014 12:43:31 午後 org.jboss.remoting3.EndpointImpl <clinit> INFO: JBoss Remoting version 3.2.18.GA-redhat-1 9 30, 2014 12:43:34 午後 org.jboss.remoting3.remote.RemoteConnection handleException ERROR: JBREM000200: Remote connection failed: javax.security.sasl.SaslException: Authentication failed: all available authentication mechanisms failed --------------------------------------------------- constituent[0]: jar:file:/opt/jmxterm/jmxterm-1.0-alpha-4-uber.jar!/WORLDS-INF/lib/jmxterm.jar constituent[1]: jar:file:/opt/jmxterm/jmxterm-1.0-alpha-4-uber.jar!/WORLDS-INF/lib/commons-beanutils.jar constituent[2]: jar:file:/opt/jmxterm/jmxterm-1.0-alpha-4-uber.jar!/WORLDS-INF/lib/commons-cli.jar constituent[3]: jar:file:/opt/jmxterm/jmxterm-1.0-alpha-4-uber.jar!/WORLDS-INF/lib/commons-collections.jar constituent[4]: jar:file:/opt/jmxterm/jmxterm-1.0-alpha-4-uber.jar!/WORLDS-INF/lib/commons-lang.jar constituent[5]: jar:file:/opt/jmxterm/jmxterm-1.0-alpha-4-uber.jar!/WORLDS-INF/lib/commons-logging.jar constituent[6]: jar:file:/opt/jmxterm/jmxterm-1.0-alpha-4-uber.jar!/WORLDS-INF/lib/commons-io.jar constituent[7]: jar:file:/opt/jmxterm/jmxterm-1.0-alpha-4-uber.jar!/WORLDS-INF/lib/jcli.jar constituent[8]: jar:file:/opt/jmxterm/jmxterm-1.0-alpha-4-uber.jar!/WORLDS-INF/lib/jline.jar --------------------------------------------------- javax.security.sasl.SaslException: Authentication failed: all available authentication mechanisms failed at org.jboss.remoting3.remote.ClientConnectionOpenListener$Capabilities.handleEvent(ClientConnectionOpenListener.java:367) at org.jboss.remoting3.remote.ClientConnectionOpenListener$Capabilities.handleEvent(ClientConnectionOpenListener.java:229) at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:72) at org.xnio.channels.TranslatingSuspendableChannel.handleReadable(TranslatingSuspendableChannel.java:189) at org.xnio.channels.TranslatingSuspendableChannel$1.handleEvent(TranslatingSuspendableChannel.java:103) at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:72) at org.xnio.channels.TranslatingSuspendableChannel.handleReadable(TranslatingSuspendableChannel.java:189) at org.xnio.ssl.JsseConnectedSslStreamChannel.handleReadable(JsseConnectedSslStreamChannel.java:180) at org.xnio.channels.TranslatingSuspendableChannel$1.handleEvent(TranslatingSuspendableChannel.java:103) at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:72) at org.xnio.nio.NioHandle.run(NioHandle.java:90) at org.xnio.nio.WorkerThread.run(WorkerThread.java:187) at ...asynchronous invocation...(Unknown Source) at org.jboss.remoting3.EndpointImpl.doConnect(EndpointImpl.java:270) at org.jboss.remoting3.EndpointImpl.doConnect(EndpointImpl.java:251) at org.jboss.remoting3.EndpointImpl.connect(EndpointImpl.java:349) at org.jboss.remoting3.EndpointImpl.connect(EndpointImpl.java:333) at org.jboss.remotingjmx.RemotingConnector.internalRemotingConnect(RemotingConnector.java:227) at org.jboss.remotingjmx.RemotingConnector.internalConnect(RemotingConnector.java:148) at org.jboss.remotingjmx.RemotingConnector.connect(RemotingConnector.java:99) at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:270) at org.cyclopsgroup.jmxterm.cc.SessionImpl.doConnect(SessionImpl.java:85) at org.cyclopsgroup.jmxterm.cc.SessionImpl.connect(SessionImpl.java:49) at org.cyclopsgroup.jmxterm.cc.CommandCenter.connect(CommandCenter.java:110) at org.cyclopsgroup.jmxterm.boot.CliMain.execute(CliMain.java:139) at org.cyclopsgroup.jmxterm.boot.CliMain.main(CliMain.java:48) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.codehaus.classworlds.Launcher.launchStandard(Launcher.java:353) at org.codehaus.classworlds.Launcher.launch(Launcher.java:264) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.codehaus.classworlds.uberjar.boot.Bootstrapper.bootstrap(Bootstrapper.java:209) at org.codehaus.classworlds.uberjar.boot.Bootstrapper.main(Bootstrapper.java:116) $
2.2 jmxterm基本的な使い方
★ドメインリストの取得 $>domains #following domains are available Catalina JMImplementation com.sun.management java.lang java.nio java.util.logging jboss.as jboss.as.expr jboss.jta jboss.modules jboss.msc jboss.remoting.handler jboss.web jboss.ws ★特定ドメインのbeanリストの取得 $>beans -d jboss.web #domain = jboss.web: jboss.web:J2EEApplication=none,J2EEServer=none,WebModule=//default-host/,j2eeType=Servlet,name=WelcomeContextConsoleServlet jboss.web:J2EEApplication=none,J2EEServer=none,j2eeType=WebModule,name=//default-host/ jboss.web:J2EEApplication=none,J2EEServer=none,j2eeType=WebModule,name=//default-host/sss jboss.web:address="/0.0.0.0",port=8080,type=Connector jboss.web:address="/0.0.0.0",port=8080,type=ProtocolHandler jboss.web:host=default-host,name=ErrorReportValve,type=Valve jboss.web:host=default-host,name=SecurityContextAssociationValve,path=/sss,type=Valve jboss.web:host=default-host,name=StandardContextValve,path=/,type=Valve jboss.web:host=default-host,name=StandardContextValve,path=/sss,type=Valve jboss.web:host=default-host,name=StandardHostValve,type=Valve jboss.web:host=default-host,path=/,type=Cache jboss.web:host=default-host,path=/,type=Manager jboss.web:host=default-host,path=/sss,realmPath=/realm0,type=Realm jboss.web:host=default-host,path=/sss,type=Cache jboss.web:host=default-host,path=/sss,type=Manager jboss.web:host=default-host,type=Host jboss.web:name=StandardEngineValve,type=Valve jboss.web:name=http--0.0.0.0-8080,type=GlobalRequestProcessor jboss.web:name=http--0.0.0.0-8080,type=ThreadPool jboss.web:serviceName=jboss.web,type=Service jboss.web:type=Engine ★beanの中身を参照する ★ -b の後ろはbeansコマンドで出力した文字列を指定する。 ★ * 全部の属性とメソッドを出力する ★ bean所属のドメインを指定する $>get -b jboss.web:address="/0.0.0.0",port=8080,type=Connector * -d jboss.web #mbean = jboss.web:address="/0.0.0.0",port=8080,type=Connector: port = 8080; protocol = HTTP/1.1; useIPVHosts = false; objectName = jboss.web:type=Connector,port=8080,address="/0.0.0.0"; redirectPort = 443; ........
2.3 Web系ワーカスレッドの情報取得
これはJMX方式しか取れないぽい。
Web系ワーカスレッドの実装はtomcatそのものが取り入れられているぽいで、JBossASに
-Dorg.apache.tomcat.util.ENABLE_MODELER=true オプションを付けて起動する必要がある。
$>get -b jboss.web:address="/0.0.0.0",port=8080,type=Connector * -d jboss.web #mbean = jboss.web:address="/0.0.0.0",port=8080,type=Connector: port = 8080; protocol = HTTP/1.1; useIPVHosts = false; objectName = jboss.web:type=Connector,port=8080,address="/0.0.0.0"; redirectPort = 443; secure = false; proxyName = null; enableLookups = false; maxPostSize = 2097152; proxyPort = 0; available = true; modelerType = org.apache.catalina.connector.Connector; info = org.apache.catalina.connector.Connector/2.1; bufferSize = 2048; scheme = http; xpoweredBy = false; allowTrace = false; domain = jboss.web; useBodyEncodingForURI = false; controller = jboss.web:type=Connector,port=8080,address="/0.0.0.0"; uRIEncoding = null; maxSavePostSize = 4096; protocolHandlerClassName = org.apache.coyote.http11.Http11Protocol; $>
2.4 リクエストプロセッサーの稼働状況
$>get -b jboss.web:name=http--0.0.0.0-8080,type=GlobalRequestProcessor * #mbean = jboss.web:name=http--0.0.0.0-8080,type=GlobalRequestProcessor: bytesSent = 0; bytesReceived = 0; processingTime = 0; errorCount = 0; maxTime = 0; requestCount = 0; modelerType = org.apache.coyote.RequestGroupInfo; $>
3 RESTful 方式
$ curl --digest http://localhost:9990/management?json.pretty -u admin
Enter host password for user 'admin':
{
"management-major-version" : 1,
"management-micro-version" : 0,
"management-minor-version" : 5,
"name" : "localhost",
"namespaces" : [],
"product-name" : "EAP",
"product-version" : "6.2.4.GA",
"profile-name" : null,
"release-codename" : "Janus",
"release-version" : "7.3.4.Final-redhat-1",
"schema-locations" : [],
"core-service" : {
"management" : null,
"service-container" : null,
"module-loading" : null,
"server-environment" : null,
"platform-mbean" : null,
"patching" : null
},