Info |
---|
SQ Official Doc Link: https://docs.sonarqube.org/display/SONAR/Monitoring |
Panel | ||||
---|---|---|---|---|
| ||||
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
?Local Access활성화 하기
로컬 접속
SonarQube 서버와 여러분이 사용하는 도구가 같은 서버에서 실행되고 있는 경우에는, SonarQube MBeans를 표시할 수 없습니다.
Remote Access원격 접속
JMX Beans에 대한 원격 접속을 활성화는 환경 설정의 예입니다.
For the WebServer 용:
For the SearchServer:
For the ComputeEngine:
구체적인 javaAdditionalOpts 엔트리는 없으며, 간단하게 sonar.ce.javaOpts를 추가합니다.
- jmxremote.access의 예:
- jmxremote.password의 예:
Note: 보안상 jmxremote.passwd 파일에 대한 접근권한은 chmod 600 혹은 chmod 400으로 수정합니다.
How to Monitor ElasticSearch?
conf/sonar.properties
에서 sonar.search.httpPort
속성을 설정합니다. 이 속성을 설정하면 대부분의 ES 모니터링 도구들이 요청하는 ElasticSerarch REST End-Point를 활성화합니다.
Elastic HQ를 사용해 다음과 같은 역할을 할 수 있습니다(Free, OS):
The SonarQube Server offers visibility about what happens internally through the exposure of JMX MBeans. ElasticSearch (ES) is used for searching in SonarQube, and there are multiple dedicated tools for ES monitoring.
Exposed JMX MBeans
In addition to the classical Java MBeans providing information about the ClassLoader, OS, Memory and Threads you have access to four more MBeans in the SonarQube Server:
- ComputeEngine
- Database
- ElasticSearch
- SonarQube
All these MBeans are read-only. It's not possible to modify or reset their values in real time.
ComputeEngineTasks MBean
Attribute Name | Description |
---|---|
ProcessingTime | Measure the time (in ms) spent to process Background Tasks since the last restart of SonarQube. Its value will always increase and will be reset by a restart of SonarQube. This measure is very powerful when:
|
ErrorCount | Number of Background Tasks which failed since the last restart of SonarQube |
PendingCount | Number of Background Tasks waiting to be processed since the last restart of SonarQube |
InProgressCount | Number of Background Tasks currently under processing. Its value is either 1 or 0, since SonarQube can process only one task at a time. |
SuccessCount | Number of Background Tasks successfully processed since the last restart of SonarQube |
WorkerCount | Number of Background Tasks that can be processed at the same time |
Note:
- the total number of Background Tasks handled since the last restart of SonarQube is equal to SuccessCount + ErrorCount
- these values are reset to their default values by restarting SonarQube
Database MBean
Same attributes are available for both ComputeEngineServer and WebServer.
Attribute Name | Description |
---|---|
MigrationStatus | Possible values are: UP_TO_DATE, REQUIRES_UPGRADE, REQUIRES_DOWNGRADE, FRESH_INSTALL (only available for WebServer). |
PoolActiveConnections | Number of active database connections |
PoolIdleConnections | Number of database connections waiting to be used |
PoolInitialSize | Initial size of the database connections pool. |
PoolMaxActiveConnections | Maximum number of active database connections |
PoolMaxIdleConnections | Maximum number of database connections waiting to be used |
PoolMaxWaitMillis | In milliseconds |
PoolRemoveAbandoned | Possible values : true, false |
PoolRemoveAbandonedTimeoutSeconds | In Seconds |
ElasticSearch MBean
Attribute Name | Description |
---|---|
NumberOfNodes | Number of ES Nodes in your SonarQube installation. |
State | Possible values are: GREEN, YELLOW, RED |
SonarQube MBean
Attribute Name | Description |
---|---|
LogLevel | Log Level: INFO, DEBUG, TRACE |
ServerId | SonarQube Server ID |
Version | SonarQube Version |
How to Activate JMX ?
Local Access
There is nothing to activate to view SonarQube MBeans if your tool is running on the same server as the SonarQube Server.
Remote Access
Here are examples of configuration to activate remote access to JMX MBeans.
For the WebServer:
# JMX WEB -
10443
/
10444
Code Block |
---|
# 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 |
For the SearchServer 용:
Code Block | ||
---|---|---|
| ||
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 |
For the ComputeEngine:
There is no specific javaAdditionalOpts entry, simply amend the sonar구체적인 javaAdditionalOpts 엔트리는 없으며, 간단하게 sonar.ce.javaOpts onejavaOpts를 추가합니다.Example of
jmxremote.access의 예:
Code Block #
# JMX Access Control file
#
reader
admin readwrite \
create readonly admin readwrite \ create javax.management.monitor.*,javax.management.timer.*,com.sun.management.*,com.oracle.jrockit.*
unregister
Example of \ unregister
jmxremote.password의 예:
Code Block language bash #
# JMX Access Password file
#
reader readerpassword
admin adminpassword
admin adminpassword
Note: on 보안상 jmxremote.password, you should apply 파일에 대한 접근권한은 chmod 600
or 400
for security reasons 혹은 chmod 400
으로 수정합니다.
ElasticSearch
?모니터링 방법
Configure in conf/sonar.properties the entry 에서 sonar.search.httpPort
. This will activate the ElasticSearch 속성을 설정합니다. 이 속성을 설정하면 대부분의 ES 모니터링 도구들이 요청하는 ElasticSerarch REST End-Point required by most ES Monitoring ToolsPoint를 활성화합니다.
Here what you can get using Elastic HQ 를 사용해 다음과 같은 역할을 할 수 있습니다(Free, OS):