diff --git a/src/main/java/com/imutil/common/HealthService.java b/src/main/java/com/imutil/common/HealthService.java
new file mode 100644
index 0000000..67f2451
--- /dev/null
+++ b/src/main/java/com/imutil/common/HealthService.java
@@ -0,0 +1,95 @@
+package com.imutil.common;
+
+import com.imutil.mapper.DistQueueMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.noear.solon.annotation.Component;
+import org.noear.solon.annotation.Inject;
+import redis.clients.jedis.Jedis;
+import redis.clients.jedis.JedisPool;
+
+import java.time.OffsetDateTime;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 健康检查服务(对齐设计:监控告警 - 中间件连通、dist_queue 堆积)
+ *
+ * 聚合 PG / Redis 连通性与分发队列状态分布,输出整体 status:
+ * - UP:PG + Redis 均连通
+ * - DEGRADED:PG 连通、Redis 异常(限流 fail-open、缓存降级,核心链路仍可用)
+ * - DOWN:PG 异常(消息落库不可用,核心受损)
+ *
+ * 队列 pending/processing/dead 计数供运维判断是否需干预:
+ * - pending 持续上涨 → worker 处理不过去,考虑扩容
+ * - processing 长期不归零且无 done 增长 → 工作线程可能卡死
+ * - dead 积累 → 需排查死信或重发
+ *
+ * @author imutil
+ */
+@Slf4j
+@Component
+public class HealthService {
+
+ @Inject
+ private DistQueueMapper distQueueMapper;
+
+ @Inject
+ private JedisPool jedisPool;
+
+ /**
+ * 采集健康指标
+ *
+ * @return 含 status / pg / redis / distQueue / timestamp
+ */
+ public Map health() {
+ Map distQueue = new LinkedHashMap<>();
+ boolean pgUp;
+ try {
+ List