모니터링

Table of Contents

SonarQube 서버는 JMX MBeans의 정보를 통해 내부적으로 어떤 일이 일어나고 있는지 시각화하는 기능을 제공합니다. 엘라스틱서치(ElasticSerarch, ES)는 SonarQube의 데이터를 검색하는 데 사용되며, 다양한 도구들을 사용해 ES 모니터링을 제공합니다.

Exposed JMX MBeans

ClassLoader, OS, 메모리 및 쓰레드에 관한 정보를 제공하는 전통적인 Java MBeans이외에, 추가로 아래 4개의 MBeans에 접근할 수 있습니다:

  • ComputeEngine
  • Database
  • ElasticSearch
  • SonarQube

위 4개 MBean은 모두 읽기 전용이며, 해당 MBeans의 제이터를 실시간으로 수정하거나 초기화할 수는 없습니다.

ComputeEngineTasks MBean

Attribute Name

Description

ProcessingTime

직전 SonarQube 서버 재시작 이후 백그라운드 태스크를 실행하는 데 소요된 시간(ms). 측정값은 계속 증가하며, SonarQube가 재시작시 초기화 됩니다.

이 지표는 다음 상황에서 매우 강력합니다:

  • SuccessCount, ErrorCount 지표와 조합해 하나의 Background Task를 처리하는 데 필요한 평균 시간을 구하는 경우
  • SonarQube가 1일 중 얼마나 많은 시간을 Background Tasks를 처리에 사용하는가를 구하는 경우, ProcessingTime은 SonarQube 서버에 걸리는 부하 정보를 전달합니다.
ErrorCountSonarQube가 재시작한 이후, 실패한 백그라운드 태스크의 수
PendingCountSonarQube가 재시작한 이후, 처리 대기 중인 백그라운드 태스크의 수
InProgressCount현재 처리중인 백그라운드 태스크의 수. SonarQube는 한 순간에 하나의 Task만 처리하므로 값은 1 혹은 0입니다.
SuccessCount

SonarQube가 재시작한 이후 ,성공한 백그라운드 태스크의 수

WorkerCount동시에 처리 가능한 백그라운드 태스크의 수

Note:

  • SonarQube가 재시작된 이후 처리된 Backgound Tasks의 총 수는 SuccessCount + ErrorCount 값과 같습니다.
  • 이 값들은 SonarQube를 재시작하면 초기화됩니다.

Database MBean

몇몇 속성들은 ComputeEngineServer와 WebServer 모두에서 사용 가능합니다.

Attribute Name

Description

MigrationStatus

가능한 값들: UPTODATE, REQUIRESUPGRADE, REQUIRESDOWNGRADE, FRESH_INSTALL(WebServer만 사용 가능함)


PoolActiveConnections활성화 된 데이터베이스 컨넥션 수
PoolIdleConnections활성화 대기 중인 데이터베이스 컨넥션 수
PoolInitialSize데이터베이스 컨넥션 풀의 최초 크기
PoolMaxActiveConnections활성화 가능한 데이터베이스 컨넥션의 최대 수
PoolMaxIdleConnections활성화 대기 가능한 데이터베이스 컨넥션의 최대 수
PoolMaxWaitMillis밀리초 단위
PoolRemoveAbandoned가능한 값들: true, false
PoolRemoveAbandonedTimeoutSeconds초 단위

ElasticSearch MBean

Attribute Name

Description

NumberOfNodesNumber of ES Nodes in your SonarQube installation.
State가능한 값: GREEN, YELLOW, RED

SonarQube MBean

Attribute Name

Description

LogLevel로그 레벨: INFO, DEBUG, TRACE
ServerId

SonarQube 서버 ID

Version

SonarQube qjwjs

JMX 활성화 하기

로컬 접속

SonarQube 서버와 여러분이 사용하는 도구가 같은 서버에서 실행되고 있는 경우에는, SonarQube MBeans를 표시할 수 없습니다.

원격 접속

JMX Beans에 대한 원격 접속을 활성화는 환경 설정의 예입니다.

WebServer 용:

# JMX WEB - 10443/10444
sonar.web.javaAdditionalOpts=-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.port=10443 -Dcom.sun.management.jmxremote.rmi.port=10444 -Dcom.sun.management.jmxremote.password.file=/opt/sonarsource/sonar/conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=/opt/sonarsource/sonar/conf/jmxremote.access

SearchServer 용:

sonar.search.javaAdditionalOpts=-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.port=19010 -Dcom.sun.management.jmxremote.rmi.port=19011 -Dcom.sun.management.jmxremote.password.file=/opt/sonarsource/sonar/conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=/opt/sonarsource/sonar/conf/jmxremote.access

ComputeEngine:

구체적인 javaAdditionalOpts 엔트리는 없으며, 간단하게 sonar.ce.javaOpts를 추가합니다.

  • jmxremote.access의 예:

    #
    # JMX Access Control file
    #
    reader readonly
    admin  readwrite \
                  create javax.management.monitor.*,javax.management.timer.*,com.sun.management.*,com.oracle.jrockit.* \
                  unregister
  • jmxremote.password의 예:

    #
    # JMX Access Password file
    #
    reader readerpassword
    admin  adminpassword

Note: 보안상 jmxremote.password 파일에 대한 접근권한은 chmod 600 혹은 chmod 400으로 수정합니다.

ElasticSearch 모니터링 방법

conf/sonar.properties에서 sonar.search.httpPort 속성을 설정합니다. 이 속성을 설정하면 대부분의 ES 모니터링 도구들이 요청하는 ElasticSerarch REST End-Point를 활성화합니다.

Elastic HQ를 사용해 다음과 같은 역할을 할 수 있습니다(Free, OS):

© 2017-2018 Moses Kim.

별도의 언급이 없는 한, 이 스페이스의 컨텐츠는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
SONARQUBE는 SonarSource SA의 트레이드 마크입니다. 모든 트레이트 마크 및 저작권은 각 소유자의 소유물입니다.

::: SonarQube 관련 문의 : 이메일 :::