본문으로 건너뛰기

설치 문제 해결

방화벽 설정 확인

와탭의 데이터 수집 서버에 대한 TCP 아웃바운드 정책을 설정하지 않으면 모니터링 정보를 전송할 수 없습니다. 방화벽 차단해제하세요.

telnet 명령을 사용해 "Connected to IP"를 확인하세요.

$ telnet 52.193.60.176 6600
Trying 52.193.60.176...
Connected to 52.193.60.176.
Escape character is '^]'.
노트

수집 서버 정보는 와탭 모니터링 서비스에서 해당 프로젝트를 선택한 다음 관리 > 에이전트 설치 메뉴에서 확인할 수 있습니다.

SpringBoot 2.2 버전 이상, Tomcat JMX가 off 상태

SpringBoot 2.2 버전 이상에서 Embedded Tomcat을 사용하는 경우 기본값으로 JMX 관련 기능이 동작하지 않습니다. 이 경우 JMX 기능을 활성화하세요. 관련 링크

application.properties
spring.jmx.enabled=true
server.tomcat.mbeanregistry.enabled=true # tomcat embedded인 경우 #
application.yml
spring:
jmx:
enabled: true
server:
tomcat:
mbeanregistry:
enabled: true #tomcat embedded인 경우

OSGI 프레임워크 사용 애플리케이션 서버의 경우

OSGI 프레임워크 구조의 애플리케이션 서버인 경우 JVM 옵션에 에이전트 패키지 prefix(whatap)를 등록하세요.

Jboss EAP 6.0 버전 이상, Jboss AS 7.0 버전 이상, Wildfly 8.0 버전 이상, IBM WebSphere AS 7.0 버전 이상 등이 해당합니다.

JBoss AS, Wildfly, JBoss EAP 6.0 이상

다음 파일에 prefix를 등록하세요.

$JBOSS_HOME/bin/standalone.conf(domain.conf)
-Djboss.modules.system.pkgs=whatap

JBOSS EAP 7.0

WebSphere

JVM 옵션으로 다음 내용을 추가하세요.

-Dcom.ibm.ws.classloader.server.alwaysAllowedPackages=whatap
  • 기본값으로 '*'로 지정된 경우 별도 설정이 필요 없습니다.
  • 설정 위치는 WebSphere를 참조합니다.

security.policy 권한을 다음과 같이 추가하세요.

$WEBSPHERE_HOME/properties/server.policy || $WEBSPHERE_PROFILE_HOME/properties/server.policy
grant codeBase "file:$WHATAP_HOME/-"
{
permission java.security.AllPermission;
};

Log Manager 관련 에러

JBoss AS 7.0 버전 이상, JBoss EAP 6.0 버전 이상에서 Log Manager 관련 에러가 발생한다면 JVM 옵션을 추가합니다.

  • -Djava.util.logging.manager 항목에 Log Manager package 명을 설정하세요.
  • -Xbootclassloader 항목에 JBoss Log Manager JAR file을 설정하세요.
(JBoss_Path)/bin/standalone.conf(domain.conf)
# Specify the exact Java VM executable to use.
#
if [ "x$JBOSS_MODULES_SYSTEM_PKGS" = "x" ]; then
JBOSS_MODULES_SYSTEM_PKGS="org.jboss.byteman,org.jboss.logmanager,whatap"
fi

...
# Specify options to pass to the Java VM.
#
if [ "x$JAVA_OPTS" = "x" ]; then
JAVA_OPTS="-Xms1303m -Xmx1303m -Djava.net.preferIPv4Stack=true"
JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS -Djava.awt.headless=true"
JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.jboss.logmanager.LogManager -Xbootclasspath/p:/home/vagrant/EAP-7.0.0/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-2.0.3.Final-redhat-1.jar"
else
echo "JAVA_OPTS already set in environment; overriding default settings with values: $JAVA_OPTS"
fi

MBeanServerBuilder 에러가 발생하는 경우

JBoss 5.0 버전 이하에서 MBeanServerBuilder 관련 에러가 출력된 경우 JVM 옵션을 추가하세요.

(JBoss_Path)/bin/run.conf
# Specify options to pass to the Java VM.
#
if [ "x$JAVA_OPTS" = "x" ]; then
JAVA_OPTS="-Xms128m -Xmx512m -XX:MaxPermSize=256m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"
JAVA_OPTS="$JAVA_OPTS -Djboss.platform.mbeanserver"
fi

Permission 오류가 발생하는 경우

Java Security Policy 관련 오류가 발생하면 $JAVA_HOME/jre/lib/security/java.policy 파일에 권한 설정을 추가하세요.

모든 권한을 일괄 적용하려면 다음과 같이 java.policy 파일에 설정을 추가하세요.

$JAVA_HOME/jre/lib/security/java.policy
grant {
permission java.security.AllPermission;
};

java.io.FilePermission 오류가 발생하는 경우

java.io.FilePermision error

다음과 같이 java.policy 파일에 설정을 추가하세요.

$JAVA_HOME/jre/lib/security/java.policy
grant {
...
permission java.io.FilePermission {오류 메시지에서 확인된 패키지 경로}, "read"
};

java.util.PropertyPermission 오류가 발생하는 경우

다음과 같이 java.policy 파일에 설정을 추가하세요.

$JAVA_HOME/jre/lib/security/java.policy
grant {
...
permission java.util.PropertyPermission {오류 메시지에서 확인된 패키지 경로}, "read"
};

Sigar library를 로딩하지 못하는 경우

$WHATAP_HOME/lib1/*.so 파일에 실행 권한이 있는지 확인하세요. 권한이 없다면 실행 권한을 부여하세요.

$ sudo chmod +x *.so

AIX 7에서 $WHATAP_HOME/lib1 하위에 libsigar-ppc64-aix-7.so 파일이 없어 오류가 발생한 경우 파일을 복사하세요.

Sigar library error on AIX 7

$ cp libsigar-ppc64-aix-5.so libsigar-ppc64-aix-7.so

CPU 지표가 -1로 표시되는 경우

최신 버전의 Java 에이전트를 사용하는 환경에서 IBM Java를 실행할 때, CPU 지표가 -1로 표시되는 경우가 있습니다. 이 문제는 특정 플랫폼에서 System Load Average 값을 지원하지 않기 때문에 발생합니다.

Java 에이전트는 기본적으로 Java Management Extensions(JMX)를 활용하여 지표를 수집합니다. OperatingSystemMXBean 인터페이스의 getSystemLoadAverage() 메소드를 사용합니다. 이 메소드는 운영 체제에 따라 시스템의 최근 1분간의 평균 부하를 반환합니다. 그러나 일부 플랫폼에서는 해당 값을 지원하지 않아 -1을 반환할 수 있습니다.

정보

getSystemLoadAverage() 메서드는 OpenJDK 소스 코드에서 확인할 수 있습니다. 예를 들어, OpenJDK 7u 버전의 소스 코드는 GitHub 저장소에서 확인할 수 있습니다.

권고 사항: 내장 라이브러리를 통한 메트릭 수집 설정

CPU 지표가 -1로 표시되는 현상을 해결하려면, Java 에이전트 설정을 통해 내장 라이브러리(OSHI 또는 SIGAR)를 활성화하세요.

  • Java 8 이상 환경: OSHI 라이브러리 활용

    운영 체제 수준의 지표를 안정적으로 수집하기 위해 OSHI 라이브러리를 사용할 수 있습니다. 에이전트 설정 방법은 다음을 참조하세요.

    whatap.conf
    # default false
    oshi_enabled=true
  • Java 8 미만 환경: SIGAR 라이브러리 활용

    Java 8 미만 환경에서는 SIGAR 라이브러리를 활용해 지표를 수집할 수 있습니다. 에이전트 설정 방법은 다음을 참조하세요.

    whatap.conf
    # default false
    sigar_enabled=true
노트
  • OSHI(oshi_enabled)와 SIGAR(sigar_enabled) 옵션은 기본값으로 비활성화되어 있습니다. 필요한 경우 명시적으로 설정해야 합니다.

  • 두 설정을 동시에 활성화하지 않도록 주의하세요. 환경에 맞는 라이브러리를 선택하여 설정하세요.