知乎专栏 |
监控指标
neo@MacBook-Pro-M2 ~> curl -s http://www.netkiller.cn:8080/actuator/metrics | jq | grep executor "executor.active", "executor.completed", "executor.pool.core", "executor.pool.max", "executor.pool.size", "executor.queue.remaining", "executor.queued",
获取指标
neo@MacBook-Pro-M2 ~> curl -s http://www.netkiller.cn:8080/actuator/metrics/executor.active | jq { "name": "executor.active", "description": "The approximate number of threads that are actively executing tasks", "baseUnit": "threads", "measurements": [ { "statistic": "VALUE", "value": 0 } ], "availableTags": [ { "tag": "name", "values": [ "asyncExecutor" ] } ] }
@Autowired ThreadPoolTaskExecutor threadPoolTaskExecutor; @GetMapping("/pool") public String pool() { int activeCount = threadPoolTaskExecutor.getActiveCount(); long completedTaskCount = threadPoolTaskExecutor.getThreadPoolExecutor().getCompletedTaskCount(); long taskCount = threadPoolTaskExecutor.getThreadPoolExecutor().getTaskCount(); int queue = threadPoolTaskExecutor.getThreadPoolExecutor().getQueue().size(); String monitor = String.format("Task: %d, Queue: %d, Active: %d, Completed: %d\n", taskCount, queue, activeCount, completedTaskCount); log.info(monitor); return monitor; }