SQ Official Doc Link: https://docs.sonarqube.org/display/SONAR/Monitoring
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가 재시작시 초기화 됩니다. 이 지표는 다음 상황에서 매우 강력합니다:
|
ErrorCount | SonarQube가 재시작한 이후, 실패한 백그라운드 태스크의 수 |
PendingCount | SonarQube가 재시작한 이후, 처리 대기 중인 백그라운드 태스크의 수 |
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 |
---|---|
NumberOfNodes | Number 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
으로 수정합니다.
How to Monitor ElasticSearch?
conf/sonar.properties에서 sonar.search.httpPort
속성을 설정합니다. 이 속성을 설정하면 대부분의 ES 모니터링 도구들이 요청하는 ElasticSerarch REST End-Point를 활성화합니다.
Elastic HQ를 사용해 다음과 같은 역할을 할 수 있습니다(Free, OS):
Add Comment