-
Notifications
You must be signed in to change notification settings - Fork 3.7k
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
package com.navercorp.pinpoint.metric.web.authorization.controller; | ||
|
||
import com.navercorp.pinpoint.metric.web.service.SystemMetricHostExclusionService; | ||
import com.navercorp.pinpoint.pinot.tenant.TenantProvider; | ||
import org.apache.logging.log4j.LogManager; | ||
import org.apache.logging.log4j.Logger; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
import org.springframework.web.bind.annotation.RequestParam; | ||
import org.springframework.web.bind.annotation.RestController; | ||
|
||
@RestController | ||
@RequestMapping(value = "/admin/systemMetric") | ||
public class SystemMetricHostExclusionController { | ||
private final Logger logger = LogManager.getLogger(this.getClass()); | ||
Check warning on line 14 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java
|
||
|
||
private final SystemMetricHostExclusionService systemMetricHostExclusionService; | ||
private final TenantProvider tenantProvider; | ||
|
||
public SystemMetricHostExclusionController(SystemMetricHostExclusionService systemMetricHostExclusionService, TenantProvider tenantProvider) { | ||
this.systemMetricHostExclusionService = systemMetricHostExclusionService; | ||
this.tenantProvider = tenantProvider; | ||
} | ||
Check warning on line 22 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java
|
||
|
||
@RequestMapping(value = "/hostGroup/addExclusion") | ||
public String excludeHostGroup(@RequestParam("hostGroupName") String hostGroupName) { | ||
logger.info("add hostGroup exclusion - hostGroupName: [{}]", hostGroupName); | ||
Check warning on line 26 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java
|
||
try { | ||
String tenantId = tenantProvider.getTenantId(); | ||
systemMetricHostExclusionService.insertHostGroupExclusion(tenantId, hostGroupName); | ||
return "OK"; | ||
} catch (Exception e) { | ||
logger.error("error while excluding hostGroupName", e); | ||
return e.getMessage(); | ||
Check warning on line 33 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java
|
||
} | ||
} | ||
|
||
@RequestMapping(value = "/hostGroup/host/addExclusion") | ||
public String excludeHostGroup(@RequestParam("hostGroupName") String hostGroupName, | ||
@RequestParam("hostName") String hostName) { | ||
logger.info("add host exclusion - hostGroupName: [{}], hostName: [{}]", hostGroupName, hostName); | ||
Check warning on line 40 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java
|
||
try { | ||
String tenantId = tenantProvider.getTenantId(); | ||
systemMetricHostExclusionService.insertHostExclusion(tenantId, hostGroupName, hostName); | ||
return "OK"; | ||
} catch (Exception e) { | ||
logger.error("error while excluding hostName", e); | ||
return e.getMessage(); | ||
Check warning on line 47 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java
|
||
} | ||
} | ||
|
||
@RequestMapping(value = "/hostGroup/removeExclusion") | ||
public String acceptHostGroup(@RequestParam("hostGroupName") String hostGroupName) { | ||
logger.info("remove host group exclusion - hostGroupName: [{}]", hostGroupName); | ||
Check warning on line 53 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java
|
||
try { | ||
String tenantId = tenantProvider.getTenantId(); | ||
systemMetricHostExclusionService.deleteHostGroupExclusion(tenantId, hostGroupName); | ||
return "OK"; | ||
} catch (Exception e) { | ||
logger.error("error while accepting hostGroupName", e); | ||
return e.getMessage(); | ||
Check warning on line 60 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java
|
||
} | ||
} | ||
|
||
@RequestMapping(value = "/hostGroup/host/removeExclusion") | ||
public String acceptHostGroup(@RequestParam("hostGroupName") String hostGroupName, | ||
@RequestParam("hostName") String hostName) { | ||
logger.info("remove host exclusion - hostGroupName: [{}], hostName: [{}]", hostGroupName, hostName); | ||
Check warning on line 67 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java
|
||
try { | ||
String tenantId = tenantProvider.getTenantId(); | ||
systemMetricHostExclusionService.deleteHostExclusion(tenantId, hostGroupName, hostName); | ||
return "OK"; | ||
} catch (Exception e) { | ||
logger.error("error while accepting hostName", e); | ||
return e.getMessage(); | ||
Check warning on line 74 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java
|
||
} | ||
} | ||
|
||
@RequestMapping(value = "/hostGroup/removeUnusedExclusions") | ||
public String cleanupUnusedExclusions(@RequestParam("hostGroupName") String hostGroupName) { | ||
logger.info("remove unused hostGroup exclusion and host exclusions - hostGroupName: [{}]", hostGroupName); | ||
Check warning on line 80 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java
|
||
try { | ||
String tenantId = tenantProvider.getTenantId(); | ||
systemMetricHostExclusionService.deleteUnusedHostExclusion(tenantId, hostGroupName); | ||
return "OK"; | ||
} catch (Exception e) { | ||
logger.error("error while removing unused exclusions", e); | ||
return e.getMessage(); | ||
Check warning on line 87 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java
|
||
} | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
package com.navercorp.pinpoint.metric.web.cache; | ||
|
||
import com.github.benmanes.caffeine.cache.Caffeine; | ||
import org.springframework.cache.CacheManager; | ||
import org.springframework.cache.annotation.EnableCaching; | ||
import org.springframework.cache.caffeine.CaffeineCacheManager; | ||
import org.springframework.context.annotation.Bean; | ||
import org.springframework.context.annotation.Configuration; | ||
|
||
import java.util.concurrent.TimeUnit; | ||
|
||
@Configuration | ||
@EnableCaching | ||
public class MetricWebCacheConfiguration { | ||
Check warning on line 14 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/cache/MetricWebCacheConfiguration.java
|
||
|
||
public static final String METRIC_HOST_GROUP_EXCLUSION_CACHE_NAME = "metricHostGroupExclusion"; | ||
public static final String METRIC_HOST_EXCLUSION_CACHE_NAME = "metricHostExclusion"; | ||
|
||
@Bean | ||
public CacheManager metricHostGroupExclusion() { | ||
CaffeineCacheManager caffeineCacheManager = new CaffeineCacheManager(METRIC_HOST_GROUP_EXCLUSION_CACHE_NAME); | ||
caffeineCacheManager.setCaffeine(Caffeine.newBuilder() | ||
.expireAfterWrite(300, TimeUnit.SECONDS)); | ||
return caffeineCacheManager; | ||
Check warning on line 24 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/cache/MetricWebCacheConfiguration.java
|
||
} | ||
|
||
@Bean | ||
public CacheManager metricHostExclusion() { | ||
CaffeineCacheManager caffeineCacheManager = new CaffeineCacheManager(METRIC_HOST_EXCLUSION_CACHE_NAME); | ||
caffeineCacheManager.setCaffeine(Caffeine.newBuilder() | ||
.expireAfterWrite(300, TimeUnit.SECONDS)); | ||
return caffeineCacheManager; | ||
Check warning on line 32 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/cache/MetricWebCacheConfiguration.java
|
||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
package com.navercorp.pinpoint.metric.web.config; | ||
|
||
import com.navercorp.pinpoint.metric.collector.config.MyBatisRegistryHandler; | ||
import com.navercorp.pinpoint.pinot.mybatis.MyBatisConfiguration; | ||
import org.apache.ibatis.session.Configuration; | ||
import org.apache.ibatis.session.SqlSessionFactory; | ||
import org.apache.logging.log4j.LogManager; | ||
import org.apache.logging.log4j.Logger; | ||
import org.mybatis.spring.SqlSessionFactoryBean; | ||
import org.mybatis.spring.SqlSessionTemplate; | ||
import org.springframework.beans.factory.annotation.Qualifier; | ||
import org.springframework.beans.factory.annotation.Value; | ||
import org.springframework.context.annotation.Bean; | ||
import org.springframework.core.io.Resource; | ||
|
||
import javax.sql.DataSource; | ||
|
||
@org.springframework.context.annotation.Configuration | ||
public class MetricWebMysqlDaoConfiguration { | ||
private final Logger logger = LogManager.getLogger(MetricWebMysqlDaoConfiguration.class); | ||
Check warning on line 20 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java
|
||
|
||
@Bean | ||
public SqlSessionFactoryBean metricSqlSessionFactory( | ||
@Qualifier("dataSource") DataSource dataSource, | ||
@Value("classpath*:/pinot-web/mapper/mysql/*Mapper.xml") Resource[] mappers) { | ||
|
||
for (Resource mapper : mappers) { | ||
logger.info("Mapper location: {}", mapper.getDescription()); | ||
Check warning on line 28 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java
|
||
} | ||
|
||
SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean(); | ||
sessionFactoryBean.setDataSource(dataSource); | ||
sessionFactoryBean.setMapperLocations(mappers); | ||
Check warning on line 33 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java
|
||
|
||
Configuration config = MyBatisConfiguration.defaultConfiguration(); | ||
sessionFactoryBean.setConfiguration(config); | ||
Check warning on line 36 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java
|
||
|
||
MyBatisRegistryHandler registry = registryHandler(); | ||
registry.registerTypeAlias(config.getTypeAliasRegistry()); | ||
Check warning on line 39 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java
|
||
|
||
sessionFactoryBean.setFailFast(true); | ||
Check warning on line 41 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java
|
||
|
||
return sessionFactoryBean; | ||
Check warning on line 43 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java
|
||
} | ||
|
||
private MyBatisRegistryHandler registryHandler() { | ||
return new WebRegistryHandler(); | ||
Check warning on line 47 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java
|
||
} | ||
|
||
@Bean | ||
public SqlSessionTemplate metricSqlSessionTemplate( | ||
@Qualifier("metricSqlSessionFactory") SqlSessionFactory sessionFactory) { | ||
return new SqlSessionTemplate(sessionFactory); | ||
Check warning on line 53 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java
|
||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
package com.navercorp.pinpoint.metric.web.dao; | ||
|
||
import java.util.List; | ||
|
||
public interface SystemMetricHostExclusionDao { | ||
|
||
List<String> selectExcludedHostGroupNameList(String tenantId); | ||
|
||
void insertMetricHostGroupExclusion(String tenantId, String hostGroupName); | ||
|
||
void deleteMetricHostGroupExclusion(String tenantId, String hostGroupName); | ||
|
||
List<String> selectExcludedHostNameList(String tenantId, String hostGroupName); | ||
|
||
void insertMetricHostExclusion(String tenantId, String hostGroupName, String hostName); | ||
|
||
void deleteMetricHostExclusion(String tenantId, String hostGroupName, String hostName); | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
package com.navercorp.pinpoint.metric.web.dao.mysql; | ||
|
||
import com.navercorp.pinpoint.metric.web.dao.SystemMetricHostExclusionDao; | ||
import com.navercorp.pinpoint.metric.web.dao.model.HostInfoSearchKey; | ||
import org.mybatis.spring.SqlSessionTemplate; | ||
import org.springframework.beans.factory.annotation.Qualifier; | ||
import org.springframework.context.annotation.Primary; | ||
import org.springframework.stereotype.Repository; | ||
|
||
import java.util.List; | ||
import java.util.Objects; | ||
|
||
@Primary | ||
@Repository | ||
public class MysqlSystemMetricHostExclusionDao implements SystemMetricHostExclusionDao { | ||
|
||
private static final String NAMESPACE = MysqlSystemMetricHostExclusionDao.class.getName() + "."; | ||
Check warning on line 17 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/mysql/MysqlSystemMetricHostExclusionDao.java
|
||
|
||
private final SqlSessionTemplate sqlMetricSessionTemplate; | ||
|
||
public MysqlSystemMetricHostExclusionDao(@Qualifier("metricSqlSessionTemplate") SqlSessionTemplate sqlMetricSessionTemplate) { | ||
this.sqlMetricSessionTemplate = Objects.requireNonNull(sqlMetricSessionTemplate, "sqlSessionTemplate"); | ||
} | ||
Check warning on line 23 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/mysql/MysqlSystemMetricHostExclusionDao.java
|
||
|
||
@Override | ||
public List<String> selectExcludedHostGroupNameList(String tenantId) { | ||
return sqlMetricSessionTemplate.selectList(NAMESPACE + "selectExcludedHostGroupNames", tenantId); | ||
Check warning on line 27 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/mysql/MysqlSystemMetricHostExclusionDao.java
|
||
} | ||
|
||
@Override | ||
public void insertMetricHostGroupExclusion(String tenantId, String hostGroupName) { | ||
sqlMetricSessionTemplate.insert(NAMESPACE + "insertHostGroupExclusion", new HostInfoSearchKey(tenantId, hostGroupName)); | ||
} | ||
Check warning on line 33 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/mysql/MysqlSystemMetricHostExclusionDao.java
|
||
|
||
@Override | ||
public void deleteMetricHostGroupExclusion(String tenantId, String hostGroupName) { | ||
sqlMetricSessionTemplate.delete(NAMESPACE + "deleteHostGroupExclusion", new HostInfoSearchKey(tenantId, hostGroupName)); | ||
} | ||
Check warning on line 38 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/mysql/MysqlSystemMetricHostExclusionDao.java
|
||
|
||
@Override | ||
public List<String> selectExcludedHostNameList(String tenantId, String hostGroupName) { | ||
return sqlMetricSessionTemplate.selectList(NAMESPACE + "selectExcludedHostNames", new HostInfoSearchKey(tenantId, hostGroupName)); | ||
Check warning on line 42 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/mysql/MysqlSystemMetricHostExclusionDao.java
|
||
} | ||
|
||
@Override | ||
public void insertMetricHostExclusion(String tenantId, String hostGroupName, String hostName) { | ||
sqlMetricSessionTemplate.insert(NAMESPACE + "insertHostExclusion", new HostInfoSearchKey(tenantId, hostGroupName, hostName)); | ||
} | ||
Check warning on line 48 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/mysql/MysqlSystemMetricHostExclusionDao.java
|
||
|
||
@Override | ||
public void deleteMetricHostExclusion(String tenantId, String hostGroupName, String hostName) { | ||
sqlMetricSessionTemplate.delete(NAMESPACE + "deleteHostExclusion", new HostInfoSearchKey(tenantId, hostGroupName, hostName)); | ||
} | ||
Check warning on line 53 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/mysql/MysqlSystemMetricHostExclusionDao.java
|
||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
package com.navercorp.pinpoint.metric.web.service; | ||
|
||
|
||
import com.navercorp.pinpoint.metric.web.cache.MetricWebCacheConfiguration; | ||
import com.navercorp.pinpoint.metric.web.dao.SystemMetricHostExclusionDao; | ||
import org.apache.logging.log4j.LogManager; | ||
import org.apache.logging.log4j.Logger; | ||
import org.springframework.cache.annotation.Cacheable; | ||
import org.springframework.stereotype.Component; | ||
|
||
import java.util.Collections; | ||
import java.util.List; | ||
import java.util.Objects; | ||
|
||
@Component | ||
public class SystemMetricHostExclusionCache { | ||
private final Logger logger = LogManager.getLogger(this.getClass()); | ||
private final SystemMetricHostExclusionDao systemMetricHostExclusionDao; | ||
|
||
public SystemMetricHostExclusionCache(SystemMetricHostExclusionDao systemMetricHostExclusionDao) { | ||
this.systemMetricHostExclusionDao = Objects.requireNonNull(systemMetricHostExclusionDao, "systemMetricHostExclusionDao"); | ||
} | ||
|
||
@Cacheable(cacheNames = "metricHostGroupExclusion", key = "#tenantId", cacheManager = MetricWebCacheConfiguration.METRIC_HOST_GROUP_EXCLUSION_CACHE_NAME) | ||
public List<String> getExcludedHostGroupNameList(String tenantId) { | ||
try { | ||
return systemMetricHostExclusionDao.selectExcludedHostGroupNameList(tenantId); | ||
} catch (Exception e) { | ||
logger.warn("error getting excludedHostGroupNameList, return empty list.", e); | ||
return Collections.emptyList(); | ||
} | ||
} | ||
|
||
@Cacheable(cacheNames = "metricHostExclusion", key = "{#tenantId, #hostGroupName}", cacheManager = MetricWebCacheConfiguration.METRIC_HOST_EXCLUSION_CACHE_NAME) | ||
public List<String> getExcludedHostNameList(String tenantId, String hostGroupName) { | ||
try { | ||
return systemMetricHostExclusionDao.selectExcludedHostNameList(tenantId, hostGroupName); | ||
} catch (Exception e) { | ||
logger.warn("error getting excludedHostNameList, return empty list.", e); | ||
return Collections.emptyList(); | ||
} | ||
} | ||
} |