实现方式采用spring的bean后置装载的接口
代码:
|
效果:
只是公司内的grafana监控图
指标的含义:
spring自带的ThreadPoolTaskExecutor线程池(至于spring的Executor为什么参数没有自定实现的Executor线程池全,这问题是由于实现机制的原因)
指标 | 含义 | 推荐expr |
---|---|---|
| 任务闲置次数 | 执行器平均闲置秒数:increase(executor_idle_seconds_sum[5m])/increase(executor_idle_seconds_count[5m]) |
| 任务耗时 | 同上 |
| 任务空闲秒数(最大值) | -- |
| 任务执行次数 | 执行器平均执行秒数:increase(executor_execution_seconds_sum[5m])/increase(executor_execution_seconds_count[5m]) |
| 任务耗时 | 同上 |
| 任务执行秒数(最大值) | -- |
自定义的Executor线程池
指标 | 含义 | 推荐expr |
---|---|---|
| 完成的任务 | 完成的任务/分钟:increase(executor_completed_tasks_total[1m]) |
| 执行器闲置次数 | 执行器平均闲置秒数:increase(executor_idle_seconds_sum[5m])/increase(executor_idle_seconds_count[5m]) |
| 执行器耗时 | 同上 |
| 执行器空闲秒数(最大值) | -- |
| 执行器活跃的线程数 | -- |
| 执行器执行次数 | 执行器平均执行秒数:increase(executor_seconds_sum[5m])/increase(executor_seconds_count[5m]) |
| 执行器耗时 | 同上 |
| 执行器执行秒数(最大值) | -- |
| 排队的任务 | 队列占用率:100*(1-executor_queue_remaining_tasks/ (executor_queue_remaining_tasks + executor_queued_tasks )) |
| 排队的剩余任务 | 同上 |
| 执行器的线程池大小 | -- |
executor_rejected_tasks_total | 拒绝的任务 | 拒绝的任务/分钟:increase(executor_rejected_tasks_total[1m]) |
executor_scheduled_cron_total | 执行器预定的cron | -- |
executor_scheduled_once_total | 执行器预定一次大小 | -- |
executor_scheduled_repetitively_total | 执行器重复执行次数 | -- |
参照:INFRA|springboot2.X统一配置面板的grpc统计模块
其他的监控也是类似,甚至可以自己来写实现
从这个问题主要是引出监控的事情,要是想要对一个线程池进行matrix监控,那么当前比较low的实现方法如下
|