代码拉取完成,页面将自动刷新
主要是监控系统可量化指标,目前每10S打印一次,目前支持日志,Prometheus。
默认使用日志的方式,日志级别为 INFO, 修改配置:cn.com.ry.framework.monitormeter.instrument.linklog=INFO
切换Prometheus的方式,在配置文件中添加如下配置:monitormeter.type=prometheus
,请求方式http://XXX:1108/prometheus
{
# 接口监控
"timed.test.throughput": 0.1,
"timed.test.max": 16.0432513,
"timed.test.mean": 16.0432513,
# 表数据量监控
"db.dataSource.area.size.value": 1.0,
"db.dataSource.dept.size.value": 2.0,
#mq监控
"mq.rocketmq.rocketmq1.topic.consumer.tps.value": 0.0,
"mq.rocketmq.rocketmq1.topic.consumer.tps.value": 0.0,
#连接池监控
"jdbc.connections.druid.dataSource.max.value": 50.0,
"jdbc.connections.druid.dataSource.active.value": 1.0,
"jdbc.connections.druid.dataSource.min.value": 5.0,
#httpclient连接池监控
"httpclient.gateway.pending.value": 0.0,
"httpclient.gateway.available.value": 0.0,
"httpclient.gateway.leased.value": 0.0,
"httpclient.gateway.max.value": 1000.0,
#缓存监控
"cache.map.size.value":100.0,
"cache.list.size.value":100.0,
"cache.double.size.value":100.0
}
# 数据库表数据量监控 k= db_query_size_rows
# datasource_name =数据源的名称 table_name为表名称
db_query_size_rows{datasource_name="dataSource",table_name="area",} 1.0
db_query_size_rows{datasource_name="dataSource",table_name="dept",} 219.0
# 连接池监控 jdbc_connections_min=初始连接数 jdbc_connections_active=当前占用连接数 jdbc_connections_max=最大连接数
# datasource_name=数据源名称
jdbc_connections_min{datasource_name="dataSource",} 5.0
jdbc_connections_active{datasource_name="dataSource",} 1.0
jdbc_connections_max{datasource_name="dataSource",} 50.0
# 方法监控 一个采集周期内 method_timed_seconds_count=请求次数 method_timed_seconds_sum=请求总耗时 method_timed_seconds_max=最大耗时
# class=类名 method=方法名
method_timed_seconds_count{class="cn.com.ry.framework.demo.controller.TestController",exception="none",method="test",} 1.0
method_timed_seconds_sum{class="cn.com.ry.framework.demo.controller.TestController",exception="none",method="test",} 16.4556164
method_timed_seconds_max{class="cn.com.ry.framework.demo.controller.TestController",exception="none",method="test",} 16.4556164
# mq监控 mq_rocketmq_tps TPS监控,单位 数量/秒。 mq_rocketmq_totalDiff 积压量
# mq_consumerGroup=消费组 mq_topic=topic mq_type=mq类型
mq_rocketmq_tps{mq_consumerGroup="consumerGroup",mq_topic="topic",mq_type="rocketMq",} 0.0
mq_rocketmq_totalDiff{mq_consumerGroup="consumerGroup",mq_topic="topic",mq_type="rocketMq",} 0.0
# httpclient连接池监控 httpclient_pool_leased=当前使用数量 httpclient_pool_pending=准备使用数量 httpclient_pool_max=连接池最大数量 httpclient_pool_available=连接池中可用的连接数,这里的是连接被使用完后可被复用
httpclient_pool_pending{httpclient_pool_name="gateway",} 0.0
httpclient_pool_leased{httpclient_pool_name="gateway",} 0.0
httpclient_pool_max{httpclient_pool_name="gateway",} 1000.0
httpclient_pool_available{httpclient_pool_name="gateway",} 0.0
# HELP jdkobject_cache_size 缓存监控
# cache_name 缓存类型
jdkobject_cache_size{cache_name="dubleCache",} 10.0
jdkobject_cache_size{cache_name="listCahce",} 100.0
jdkobject_cache_size{cache_name="mapCache",} 100.0
<dependency>
<groupId>cn.com.ry.framewrok</groupId>
<artifactId>ry-monitormeter</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
给方法添加注解@Timed(value = "timed.test")
,value为指标的名称
如果使用Prometheus的方式的方式就不要写value,直接使用@Timed
如下,就可以监控接口的性能指标。
@RequestMapping("/")
@ResponseBody
@Timed(value = "timed.test")
// @Timed Prometheus的方式
public String test() throws IOException, InterruptedException {
Thread.sleep(new Random().nextInt(3000));
return "成功";
}
数据库连接池自动发现,目前支持DBCP,Druid,Hikari
DEMO如下:
@Service
public class MonitorAutoConfiguration implements InitializingBean {
//注册器
@Autowired
MeterRegistry meterRegistry;
//数据源
@Autowired
DataSource dataSource;
@Override
public void afterPropertiesSet() throws Exception {
//RocketMQ监控
String name = "rocketmq1";
String nameserver = "10.206.36.22:9876";
new MQMonitor(name, nameserver)
.topic(""CancelWaybill"", "CancelWaybill_RCB_MS")
.topic("SignConfirmMQ", "SignConfirm_RCB_MS")
.buildMqMetrics(meterRegistry);
//数据库表监控
new JDBCMonitor("dataSource", dataSource)
.query("account_area_info", "select count(1) from account_area_info")
.query("account_dept_area", "select count(1) from account_dept_area")
.buildQueryMetrics(meterRegistry);
//缓存监控
Map map = new HashMap();
for (int i = 0; i < 100; i++) {
map.put("data" + i, i);
}
new JavaCacheMetrics(map, "cache").bindTo(meterRegistry);
List list = new ArrayList();
for (int i = 0; i < 100; i++) {
list.add(i);
}
new JavaCacheMetrics(list, "cahce").bindTo(meterRegistry);
new JavaCacheMetrics(10.0, "cahce").bindTo(meterRegistry);
//httpclient监控
int maxTotal=1000;
int maxPerRoute=50;
PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
cm.setMaxTotal(maxTotal);
cm.setDefaultMaxPerRoute(maxPerRoute);
new HttpClientPoolMetric("gateway", cm).bindTo(meterRegistry);
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。