Oracle Fusion Middleware/Coherence

7장. Coherence 모니터링 (with JMX)

수상한 김토끼 2022. 6. 8. 19:35

안녕하세요.

'수상한 김토끼' 입니다.

5, 6장의 코히어런스 세션그리드 서비스를 통해 코히어런스 기반 세션 클러스터링을 확인 해 보았습니다.

7장에서는 JXM를 활용한 코히어런스 모니터링에 대해 알아가는 시간을 갖도록 하겠습니다.

 

기본적으로 제공되는 코히어런스 Client Application을 통해 확인이 가능하지만 가시성이 떨어지고

사용에 불편함이 있기때문에 Java Visual VM과 JMX를 통한 모니터링을 추천드립니다.

 

이 블로그 글은 미들웨어 경험이 없으신 분들도 쉽게 따라 하실 수 있도록 쉽게 작성하는 것이 목표입니다.

설명을 보고 진행하시다가 궁금하신 내용은 댓글로 문의하시면 가능한 범위 내에서 알려 드리도록 하겠습니다.


1. Visual VM 설치

먼저 Visual VM 홈페이지를 통해 Visual VM을 다운로드 합니다.

https://visualvm.github.io/download.html

 

VisualVM: Download

First Steps Unzip the downloaded archive. The archive already contains the top-level visualvm directory. Start VisualVM by invoking the binary appropriate for your OS:visualvm\bin\visualvm.exe or visualvm/bin/visualvm You may provide additional options to

visualvm.github.io

저는 현재기준 최신버전인 2.1.3 버전을 다운로드 받았습니다.

다운로드 받은 압축파일을 원하는 위치에 풀어줍니다.

사용하는 PC에 1.8버전 이상의 Java가 설치되지 않았다면 $VISUALVM_HOME/etc/visualvm.conf 파일의

visualvm_jdkhome 변수에 사용하고자 하는 Java위치를 지정해 줍니다.

visualvm_jdkhome 변수는 주석처리가 되어 있음으로 해당 항목을 확인 후 아래와 같이 변경 해 줍니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#
# Copyright (c) 2007, 2021, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
 
# Default locations of userdir and cachedir:
#
# On Windows ${DEFAULT_USERDIR_ROOT} will be replaced by the launcher
# with "<AppData>\VisualVM" where <AppData> is user's
# value of "AppData" key in Windows Registry under
# "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
# and ${DEFAULT_CACHEDIR_ROOT} will be replaced by the launcher
# with "<Local AppData>\VisualVM\Cache" where <Local AppData> is user's
# value of "Local AppData" key in Windows Registry under
# "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
#
# On Mac ${DEFAULT_USERDIR_ROOT} will be replaced by the launcher
# with "~/Library/Application Support/VisualVM" and
# ${DEFAULT_CACHEDIR_ROOT} with "~/Library/Caches/VisualVM"
#
# On other systems ${DEFAULT_USERDIR_ROOT} will be replaced by the launcher
# with "~/.visualvm" and ${DEFAULT_CACHEDIR_ROOT} with "~/.cache/visualvm"
#
# You can also use ${HOME} variable which will be replaced with
# user.home JVM system property value. This variable is valid only in
# visualvm_default_userdir and visualvm_default_cachedir properties.
#
# NOTE: If you specify a non-default userdir path on command line
# (--userdir option) and don't specify a cachedir path (--cachedir option),
# cachedir will be in "<userdir>/var/cache".
#
# Cachedir must be different from userdir. The same cachedir and userdir
# would cause problems.
#
visualvm_default_userdir="${DEFAULT_USERDIR_ROOT}/2.1.3"
visualvm_default_cachedir="${DEFAULT_CACHEDIR_ROOT}/2.1.3"
 
# Options used by VisualVM launcher by default:
# (can be overridden by explicit command line switches)
#
 
visualvm_default_options="-J-Xms24m -J-Xmx768m -J-Dnetbeans.accept_license_class=org.graalvm.visualvm.modules.startup.AcceptLicense -J-Dnetbeans.importclass=org.graalvm.visualvm.modules.startup.ImportSettings -J-Dsun.jvmstat.perdata.syncWaitMs=10000 -J-Dsun.java2d.noddraw=true -J-Dsun.java2d.d3d=false -J-Dorg.netbeans.core.TimeableEventQueue.quantum=360000 -J-Dpolyglot.js.nashorn-compat=true -J-Dsun.misc.URLClassPath.disableJarChecking=true -J-Djdk.attach.allowAttachSelf=true -J-Dorg.openide.util.ImageUtilities.level=950 -J-DTopSecurityManager.disable=true -J--add-exports=java.desktop/com.sun.java.swing.plaf.gtk=ALL-UNNAMED -J--add-exports=java.desktop/sun.awt=ALL-UNNAMED -J--add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor.event=ALL-UNNAMED -J--add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED -J--add-exports=java.desktop/sun.swing=ALL-UNNAMED -J--add-exports=jdk.attach/sun.tools.attach=ALL-UNNAMED -J--add-opens=java.desktop/sun.awt.X11=ALL-UNNAMED -J--add-opens=java.desktop/javax.swing.plaf.synth=ALL-UNNAMED -J--add-opens=java.base/java.net=ALL-UNNAMED -J--add-opens=java.base/java.lang.ref=ALL-UNNAMED -J--add-opens=java.base/java.lang=ALL-UNNAMED -J--add-opens=java.desktop/javax.swing=ALL-UNNAMED -J--add-opens=java.desktop/javax.swing.plaf.basic=ALL-UNNAMED -J-XX:+IgnoreUnrecognizedVMOptions"
# for development purposes you may wish to append: -J-Dnetbeans.logger.console=true -J-Dnetbeans.exception.report.min.level=900 -J-ea
 
# Default location of JDK:
#
# It can be overridden on command line by using --jdkhome <dir>
# Be careful when changing jdkhome.
# There are two VisualVM launchers for Windows (32-bit and 64-bit) and
# installer points to one of those in the VisualVM application shortcut 
# based on the Java version selected at installation time.
#
#visualvm_jdkhome="/path/to/jdk"
visualvm_jdkhome="D:\developerWorks\jdk1.8.0_121"
 
# Additional module clusters:
# using ${path.separator} (';' on Windows or ':' on Unix):
#
#visualvm_extraclusters="/absolute/path/to/cluster1:/absolute/path/to/cluster2"
 
cs

$VISUALVM_HOME/bin/visualvm.exe 파일을 실행합니다.

Visual VM 프로그램이 실행되었습니다.


2. Visual VM plug-in(Visual VM - Coherence) 설치

다음 웹페이지를 참고하여 코히어런스 전용 플러그인을 설치 해 줍니다.

https://github.com/oracle/coherence-visualvm

 

GitHub - oracle/coherence-visualvm: The Coherence-VisualVM Plugin provides management and monitoring of a single Coherence clust

The Coherence-VisualVM Plugin provides management and monitoring of a single Coherence cluster using the VisualVM management utility. - GitHub - oracle/coherence-visualvm: The Coherence-VisualVM Pl...

github.com

설치과정을 요약하면 다음과 같습니다.

Installing the Plugin from VisualVM

The Coherence VisualVM Plugin is available from the list of plugins in VisualVM versions 2.0.6 and above.
To install the Plugin carry out the following:
  1. Choose Tools  Plugins from the main menu.
  2. The Plugin will be displayed as VisualVM-Coherence. If it is not present in the list then click on the Check for Newest button
  3. In the Available Plugins tab, select the Install checkbox for the VisualVM-Coherence. Click Install.
  4. Step through and complete the plugin installer.

플러그인까지 설치가 완료 되어 Visual VM 준비는 마무리 되었습니다.


3. Coherence JMX 설정변경

JMX를 사용하기 위해서는 JMX 관련 JAVA_OPT(JMXPROPERTIES) 변경이 필요합니다.

$COHERENCE_HOME/bin/cache-server.sh 파일의 JMXPROPERTIES 부분에 다음 옵션을 추가 해 줍니다.

1
2
3
4
5
6
7
[coherence@coherence bin]$ pwd
/home/coherence/coherence14c/coherence/bin
[coherence@coherence bin]$ ls
cache-server.sh           coherence.sh           multicast-test.sh  readme.txt
cache-server.sh.20220511  coherence.sh.visualvm  pof-config-gen.sh
cache-server.sh.visualvm  datagram-test.sh       query.sh
[coherence@coherence bin]$
cs

주석 처리된 부분이 기존항목이며 주석이 해제된 부분이 추가 된 내용입니다.

1
2
3
4
5
if [ "$1" = "-jmx" ]; then
    # JMXPROPERTIES="-Dcoherence.management=all -Dcoherence.management.remote=true"
    JMXPROPERTIES="-Dcoherence.management=all -Dcoherence.management.remote=true -Dcom.sun.management.jmxremote.port=8686 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=146.56.47.11"
    shift
fi
cs

해당 내용은 JMX 관련 내용으로 자세한 내용은 다음 웹페이지를 참조해 주세요.

https://docs.oracle.com/middleware/1221/coherence/manage/jmx.htm#COHMG5571

 

Using JMX to Manage Oracle Coherence

The Oracle Coherence management framework provides the ability to filter MBeans before they are registered in the MBean server. An out-of-the-box MBean filter is provided, and custom filters can be created as required. The included MBean filter (com.tagoso

docs.oracle.com

수정이 완료된 전체 cache-server.sh 파일입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
[coherence@coherence bin]$ pwd
/home/coherence/coherence14c/coherence/bin
[coherence@coherence bin]$ ls
cache-server.sh           cache-server.sh.visualvm  coherence.sh.visualvm  multicast-test.sh  query.sh
cache-server.sh.20220511  coherence.sh              datagram-test.sh       pof-config-gen.sh  readme.txt
[coherence@coherence bin]$ cat cache-server.sh
#!/bin/sh
 
# This will start a cache server
 
# specify the Coherence installation directory
SCRIPT_PATH="${0}"
while [ -"${SCRIPT_PATH}" ]; do
  LS=`ls -ld "${SCRIPT_PATH}"`
  LINK=`expr "${LS}" : '.*-> \(.*\)$'`
  if [ `expr "${LINK}" : '/.*'> /dev/null ]; then
    SCRIPT_PATH="${LINK}"
  else
    SCRIPT_PATH="`dirname "${SCRIPT_PATH}"`/${LINK}"
  fi
done
 
CURRENT_DIR=`pwd`
cd `dirname ${SCRIPT_PATH}` > /dev/null
SCRIPT_PATH=`pwd`
COHERENCE_HOME=`dirname $SCRIPT_PATH`
cd ${CURRENT_DIR}
 
# specify the JVM heap size
MEMORY=1g
 
# jvm ipv4 set
IPV4=-Djava.net.preferIPv4Stack=true
 
if [ ! -f ${COHERENCE_HOME}/bin/cache-server.sh ]; then
  echo "coherence.sh: must be run from the Coherence installation directory."
  exit
fi
 
if [ -f $JAVA_HOME/bin/java ]; then
  JAVAEXEC=$JAVA_HOME/bin/java
else
  JAVAEXEC=java
fi
 
if [ "$1" = "-jmx" ]; then
    # JMXPROPERTIES="-Dcoherence.management=all -Dcoherence.management.remote=true"
    JMXPROPERTIES="-Dcoherence.management=all -Dcoherence.management.remote=true -Dcom.sun.management.jmxremote.port=8686 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=146.56.47.11"
    shift
fi
 
# JAVA_OPTS="-Xms$MEMORY -Xmx$MEMORY $IPV4 $JMXPROPERTIES"
 
# $JAVAEXEC -server -showversion $JAVA_OPTS -cp "$COHERENCE_HOME/lib/coherence.jar" com.tangosol.net.DefaultCacheServer "$@"
 
COHERENCE_NAME='weblogic_session_cluster'
 
JAVA_OPTS="-Xms${MEMORY} -Xmx${MEMORY}"
JAVA_OPTS="${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom ${JMXPROPERTIES}"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.cacheconfig=default-session-cache-config.xml"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.session.localstorage=true"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.cluster=my_cluster"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.clusteraddress=224.2.1.2"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.clusterport=14199"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.ttl=1"
JAVA_OPTS="${JAVA_OPTS} -Djava.net.preferIPv4Stack=true "
 
echo $JAVA_OPTS
 
# $JAVAEXEC -server -showversion -cp "${COHERENCE_HOME}/lib/coherence-web.jar:${COHERENCE_HOME}/lib/coherence.jar"\
# $JAVA_OPTS com.tangosol.net.DefaultCacheServer $1
 
# $JAVAEXEC -server -showversion -cp "$COHERENCE_HOME/lib/coherence.jar:${COHERENCE_HOME}/lib/coherence-web.jar" $JAVA_OPTS com.tangosol.net.DefaultCacheServer $1
$JAVAEXEC -server -showversion -cp "$COHERENCE_HOME/lib/coherence.jar:${COHERENCE_HOME}/lib/coherence-web.jar" $JAVA_OPTS com.tangosol.net.DefaultCacheServer $1
cs

cache-server.sh 파일을 실행해 줍니다.

단 변경한 JAVA_OPT(JMXPROPERTIES) 적용을 위해 -jmx 파라미터를 붙여야 합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
[coherence@coherence bin]$ pwd
/home/coherence/coherence14c/coherence/bin
[coherence@coherence bin]$ ls
cache-server.sh           cache-server.sh.visualvm  coherence.sh.visualvm  multicast-test.sh  query.sh
cache-server.sh.20220511  coherence.sh              datagram-test.sh       pof-config-gen.sh  readme.txt
[coherence@coherence bin]$ ./cache-server.sh.visualvm -jmx
-Xms1g -Xmx1g -Djava.security.egd=file:/dev/./urandom -Dcoherence.management=all -Dcoherence.management.remote=true -Dcom.sun.management.jmxremote.port=8686 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=146.56.47.11 -Dcoherence.cacheconfig=default-session-cache-config.xml -Dcoherence.session.localstorage=true -Dcoherence.cluster=my_cluster -Dcoherence.clusteraddress=224.2.1.2 -Dcoherence.clusterport=14199 -Dcoherence.ttl=1 -Djava.net.preferIPv4Stack=true
java version "1.8.0_321"
Java(TM) SE Runtime Environment (build 1.8.0_321-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.321-b07, mixed mode)
 
2022-06-08 19:21:48.729/0.828 Oracle Coherence 14.1.1.0.0 <Info> (thread=main, member=n/a): Loaded operational configuration from "jar:file:/home/coherence/coherence14c/coherence/lib/coherence.jar!/tangosol-coherence.xml"
2022-06-08 19:21:48.850/0.949 Oracle Coherence 14.1.1.0.0 <Info> (thread=main, member=n/a): Loaded operational overrides from "jar:file:/home/coherence/coherence14c/coherence/lib/coherence.jar!/tangosol-coherence-override-dev.xml"
2022-06-08 19:21:48.851/0.950 Oracle Coherence 14.1.1.0.0 <Info> (thread=main, member=n/a): Optional configuration override "/tangosol-coherence-override.xml" is not specified
2022-06-08 19:21:48.856/0.955 Oracle Coherence 14.1.1.0.0 <Info> (thread=main, member=n/a): Optional configuration override "cache-factory-config.xml" is not specified
2022-06-08 19:21:48.857/0.956 Oracle Coherence 14.1.1.0.0 <Info> (thread=main, member=n/a): Optional configuration override "cache-factory-builder-config.xml" is not specified
2022-06-08 19:21:48.857/0.956 Oracle Coherence 14.1.1.0.0 <Info> (thread=main, member=n/a): Optional configuration override "/custom-mbeans.xml" is not specified
 
Oracle Coherence Version 14.1.1.0.0 Build 77467
 Grid Edition: Development mode
Copyright (c) 20002020, Oracle and/or its affiliates. All rights reserved.
 
2022-06-08 19:21:49.043/1.142 Oracle Coherence GE 14.1.1.0.0 <Info> (thread=main, member=n/a): Loaded cache configuration from "jar:file:/home/coherence/coherence14c/coherence/lib/coherence-web.jar!/default-session-cache-config.xml"
2022-06-08 19:21:49.274/1.373 Oracle Coherence GE 14.1.1.0.0 <Info> (thread=main, member=n/a): Loaded Reporter configuration from "jar:file:/home/coherence/coherence14c/coherence/lib/coherence.jar!/reports/report-group.xml"
2022-06-08 19:21:49.506/1.605 Oracle Coherence GE 14.1.1.0.0 <Info> (thread=main, member=n/a): Created cache factory com.tangosol.net.ExtensibleConfigurableCacheFactory
2022-06-08 19:21:49.896/1.995 Oracle Coherence GE 14.1.1.0.0 <Info> (thread=main, member=n/a): TCMP bound to /10.0.0.58:45605 using SystemDatagramSocketProvider
2022-06-08 19:21:50.019/2.118 Oracle Coherence GE 14.1.1.0.0 <Info> (thread=Cluster, member=n/a): Failed to satisfy the variance: allowed=16, actual=17
2022-06-08 19:21:50.019/2.118 Oracle Coherence GE 14.1.1.0.0 <Info> (thread=Cluster, member=n/a): Increasing allowable variance to 17
2022-06-08 19:21:50.399/2.498 Oracle Coherence GE 14.1.1.0.0 <Info> (thread=Cluster, member=n/a): Member(Id=2, Timestamp=2022-06-08 16:45:20.157, Address=10.0.0.58:38407, MachineId=43726, Location=process:3076, Role=WeblogicServer) joined Cluster with senior member 2
2022-06-08 19:21:50.399/2.499 Oracle Coherence GE 14.1.1.0.0 <Info> (thread=Cluster, member=n/a): This Member(Id=1, Timestamp=2022-06-08 19:21:50.195, Address=10.0.0.58:45605, MachineId=43726, Location=process:5500, Role=CoherenceServer, Edition=Grid Edition, Mode=Development, CpuCount=2, SocketCount=2) joined cluster "my_cluster" with senior Member(Id=2, Timestamp=2022-06-08 16:45:20.157, Address=10.0.0.58:38407, MachineId=43726, Location=process:3076, Role=WeblogicServer, Edition=Grid Edition, Mode=Development, CpuCount=2, SocketCount=2)
2022-06-08 19:21:50.600/2.699 Oracle Coherence GE 14.1.1.0.0 <Info> (thread=Cluster, member=n/a): Member(Id=3, Timestamp=2022-06-08 16:45:42.905, Address=10.0.0.58:32957, MachineId=43726, Location=process:3233, Role=WeblogicServer) joined Cluster with senior member 2
2022-06-08 19:21:50.637/2.736 Oracle Coherence GE 14.1.1.0.0 <D5> (thread=Transport:TransportService, member=n/a): Service TransportService is bound to tmb://10.0.0.58:45605.58528
2022-06-08 19:21:50.662/2.761 Oracle Coherence GE 14.1.1.0.0 <Info> (thread=Transport:TransportService, member=n/a): Service TransportService joined the cluster with senior service member 2
2022-06-08 19:21:50.673/2.772 Oracle Coherence GE 14.1.1.0.0 <Info> (thread=SelectionService(channels=5, selector=MultiplexedSelector(sun.nio.ch.EPollSelectorImpl@58594a11), id=708348097), member=n/a): Connection established with tmb://10.0.0.58:38407.36071
2022-06-08 19:21:50.675/2.774 Oracle Coherence GE 14.1.1.0.0 <Info> (thread=SelectionService(channels=5, selector=MultiplexedSelector(sun.nio.ch.EPollSelectorImpl@58594a11), id=708348097), member=n/a): Connection established with tmb://10.0.0.58:32957.57642
2022-06-08 19:21:50.677/2.776 Oracle Coherence GE 14.1.1.0.0 <Info> (thread=main, member=n/a): Started cluster Name=my_cluster, ClusterPort=14199
 
Group{Address=224.2.1.2, TTL=1}
 
MasterMemberSet(
  ThisMember=Member(Id=1, Timestamp=2022-06-08 19:21:50.195, Address=10.0.0.58:45605, MachineId=43726, Location=process:5500, Role=CoherenceServer)
  OldestMember=Member(Id=2, Timestamp=2022-06-08 16:45:20.157, Address=10.0.0.58:38407, MachineId=43726, Location=process:3076, Role=WeblogicServer)
  ActualMemberSet=MemberSet(Size=3
    Member(Id=1, Timestamp=2022-06-08 19:21:50.195, Address=10.0.0.58:45605, MachineId=43726, Location=process:5500, Role=CoherenceServer)
    Member(Id=2, Timestamp=2022-06-08 16:45:20.157, Address=10.0.0.58:38407, MachineId=43726, Location=process:3076, Role=WeblogicServer)
    Member(Id=3, Timestamp=2022-06-08 16:45:42.905, Address=10.0.0.58:32957, MachineId=43726, Location=process:3233, Role=WeblogicServer)
    )
  MemberId|ServiceJoined|MemberState|Version
    1|2022-06-08 19:21:50.195|JOINED|14.1.1.0.0,
    2|2022-06-08 16:45:20.157|JOINED|14.1.1.0.0,
    3|2022-06-08 16:45:42.905|JOINED|14.1.1.0.0
  RecycleMillis=1200000
  RecycleSet=MemberSet(Size=1
    Member(Id=14, Timestamp=2022-06-08 19:21:32.879, Address=10.0.0.58:40743, MachineId=43726)
    )
  )
 
TcpRing{Connections=[3]}
IpMonitor{Addresses=0, Timeout=15s}
 
2022-06-08 19:21:50.698/2.797 Oracle Coherence GE 14.1.1.0.0 <Info> (thread=Invocation:Management, member=1): Service Management joined the cluster with senior service member 2
2022-06-08 19:21:50.866/2.966 Oracle Coherence GE 14.1.1.0.0 <Info> (thread=ReplicatedCache:oracle.coherence.web:ReplicatedSessionsMisc, member=1): Service oracle.coherence.web:ReplicatedSessionsMisc joined the cluster with senior service member 1
2022-06-08 19:21:51.228/3.327 Oracle Coherence GE 14.1.1.0.0 <Info> (thread=DistributedCache:oracle.coherence.web:DistributedSessions, member=1): Service oracle.coherence.web:DistributedSessions joined the cluster with senior service member 2
2022-06-08 19:21:51.302/3.401 Oracle Coherence GE 14.1.1.0.0 <Info> (thread=main, member=1):
Services
  (
  ClusterService{Name=Cluster, State=(SERVICE_STARTED, STATE_JOINED), Id=0, OldestMemberId=2}
  TransportService{Name=TransportService, State=(SERVICE_STARTED), Id=1, OldestMemberId=2}
  InvocationService{Name=Management, State=(SERVICE_STARTED), Id=2, OldestMemberId=2}
  ReplicatedCache{Name=oracle.coherence.web:ReplicatedSessionsMisc, State=(SERVICE_STARTED), Id=3, OldestMemberId=1}
  PartitionedCache{Name=oracle.coherence.web:DistributedSessions, State=(SERVICE_STARTED), Id=4, OldestMemberId=2, LocalStorage=enabled, PartitionCount=257, BackupCount=1, AssignedPartitions=0, BackupPartitions=0, CoordinatorId=2}
  )
 
Started DefaultCacheServer...
 
2022-06-08 19:21:51.316/3.415 Oracle Coherence GE 14.1.1.0.0 <Info> (thread=FlashJournalRM-Preparer, member=1): Journal Resource Manager: The Flash Journal is using /tmp as the temporary directory.
2022-06-08 19:21:51.327/3.426 Oracle Coherence GE 14.1.1.0.0 <Info> (thread=DistributedCache:oracle.coherence.web:DistributedSessions, member=1): Journal Resource Manager: The RAM Journal is configured to use a maximum of 251264KB
2022-06-08 19:21:52.408/4.507 Oracle Coherence GE 14.1.1.0.0 <Info> (thread=DistributedCache:oracle.coherence.web:DistributedSessions, member=1): Asking member 2 for primary ownership of PartitionSet{22..4163..86}
2022-06-08 19:21:52.572/4.671 Oracle Coherence GE 14.1.1.0.0 <Info> (thread=DistributedCache:oracle.coherence.web:DistributedSessions, member=1): Asking member 3 for primary ownership of PartitionSet{0..2142..61}
2022-06-08 19:21:52.720/4.819 Oracle Coherence GE 14.1.1.0.0 <Info> (thread=DistributedCache:oracle.coherence.web:DistributedSessions, member=1): Transferring 0B of backup[1for PartitionSet{0} to member 3
2022-06-08 19:21:52.822/4.921 Oracle Coherence GE 14.1.1.0.0 <Info> (thread=DistributedCache:oracle.coherence.web:DistributedSessions, member=1): Partition ownership has stabilized with 3 nodes
cs

코히어런스가 정상적으로 기동 되었습니다.


4. Visual VM Coherence JMX 모니터링

Visual VM에서 Remote 항목을 클릭하여 Add Remote Host를 선택합니다.

코히어런스 서버 IP를 입력후 OK를 눌러 줍니다.

해당 호스트를 클릭하여 Add JMX Connection 항목을 선택합니다.

위에서 설정한 JMX 포트번호를 입력하고 Do not require SSL connection을 선택한 후 OK를 눌러 등록합니다.

등록이 완료되면 다음과 같이 'Coherence DefaultCacheServer' 항목이 표시 됩니다.

'Coherence DefaultCacheServer' 항목을 선택하면 다음과 같은 상세화면을 통해 모니터링이 가능합니다.

코히어런스 전용 플러그인을 설치했기 때문에 클러스터에 대한 상세 모니터링이 가능합니다.

 

여기까지 Visual VM과 JMX를 활용하여 코히어런스 모니터링 환경 구성을 완료 하였습니다.

보면 볼수록 매력있는 솔루션 같습니다.