티스토리 뷰
Scouter 에서 기본적으로 tomcat DBCP 는 모니터링이 가능하지만 spring 의 hikari 는 모니터링이 되지 않는다. Scouter Paper 에서 이를 꼭 모니터링 하고 싶어서 여기저기 열심히 찾아 다녔지만 해결 방법을 찾지 못 했다. Scouter 의 release 기록을 보면서 hikari 가 추가된 버전이 있는 지도 확인해 보았지만 역시나 찾지 못 했다. (사용 중인 Scouter 버전 2.0.1)
이제 이 부분을 보이게 하고 싶어서 스카우터의 Datasource 를 등록하는 부분의 소스를 찾아 보았다.
https://github.com/scouter-project/scouter
이곳으로 이동해서 /scouter.agent.java/src/main/java/scouter/agent/counter/task/TomcatJMXPerf.java 이 경로의 소스를 확인해 보면 이 클래스의 getMBeanList() 메소드를 보면 Datasource 를 세팅하고 있고 type 이 DataSource 인 mbean 에서 값을 꺼내오는 것을 확인할 수 있다.
이 부분의 소스를 보고 직접 mbean 을 만들어서 등록했다.
public interface DataSourceMonitoringMBean {
int getnumActive();
int getnumIdle();
int getmaxActive();
int getmaxTotal();
}
public class DataSourceMonitoring implements DataSourceMonitoringMBean {
private HikariDataSource dataSource;
DataSourceMonitoring(HikariDataSource dataSource) {
this.dataSource = dataSource;
}
@Override
public int getnumActive() {
return dataSource.getHikariPoolMXBean().getActiveConnections();
}
@Override
public int getnumIdle() {
return dataSource.getHikariPoolMXBean().getIdleConnections();
}
@Override
public int getmaxActive() {
return dataSource.getHikariConfigMXBean().getMaximumPoolSize();
}
@Override
public int getmaxTotal() {
return dataSource.getHikariConfigMXBean().getMaximumPoolSize();
}
}
@Configuration
@MapperScan(basePackages = "com.test")
@AllArgsConstructor
public class DataSourceConfig {
private HikariDataSource dataSource;
@PostConstruct
public void init() throws Exception {
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
ObjectName objectName = new ObjectName("com.test:type=DataSource,name=hikari-pool,context=/");
DataSourceMonitoring dataSourceMonitoring = new DataSourceMonitoring(dataSource);
mBeanServer.registerMBean(dataSourceMonitoring, objectName);
}
}
maxActive 와 maxTotal 은 같은 역할을 해서 그냥 같은 값으로 세팅해 주었다. (주석에 tomcat 버전을 위한 것이라고 되어있기 때문에)
'IT > 모니터링' 카테고리의 다른 글
Pinpoint 사용 - Pinpoint 설치 (0) | 2017.07.03 |
---|---|
Pinpoint 사용 - HBase 설치 (0) | 2017.07.03 |
2. 성능 테스트 모니터링 준비(JMX, Scouter) - Scouter (0) | 2016.12.25 |
1. 성능 테스트 모니터링 준비(JMX, Scouter) - JMX (0) | 2016.12.25 |
Scouter에서 Non Http 서비스 hook (0) | 2016.10.20 |