---
title: 健康检查与监控
description: 存活探针和就绪探针、它们能与不能验证的内容、日志格式,以及应针对哪些信号设置告警。
canonical: https://developer.unico.io/zh-CN/human-plugin/self-hosting/health-and-monitoring
locale: zh-CN
generated_by: markdown-export
---

# 健康检查与监控

应探测什么、应关注什么,以及探针无法告诉您的内容。

<a id="probes"></a>

## 探针

| 端点 | 响应 | 用途 |
| --- | --- | --- |
| `GET /health/live` | 进程正常处理请求时返回 `200 {"status":"ok"}` | 存活检查 |
| `GET /health/ready` | PostgreSQL 有响应时返回 `200 {"status":"ok"}`,否则返回 `503 {"status":"unavailable"}` | 就绪检查:仅在就绪后才路由流量 |

```yaml
livenessProbe:
  httpGet: { path: /health/live, port: 8080 }
readinessProbe:
  httpGet: { path: /health/ready, port: 8080 }
  timeoutSeconds: 5
```

请为就绪探针设置 `timeoutSeconds`。如果 PostgreSQL 接受连接但不再响应,检查可能会等待远超该时长,而设置超时会让探针失败而不是挂起。

<a id="what-readiness-does-not-check"></a>

### 就绪检查不会验证的内容

就绪检查只检查数据库。它**不会**检查访问密钥是否有效,也不会检查能否连接到 Unico。错误的访问密钥会表现为创建时的错误,而不是探针失败。请在部署后的检查中加入一次真实的创建请求。

<a id="logs"></a>

## 日志

日志为输出到标准输出的 JSON 行,包含 `timestamp`、`severity`、`service` 和 `message`。涉及已存储流程的失败会包含其 `id`。调用方造成的错误(`400`、`404`、`409`、`422`)不会被记录。

正常启动会在 PostgreSQL 连接消息之间按以下顺序记录这些行(目录的 `version` 和 `count` 会随每次目录发布而变化):

```json
{"severity":"INFO","timestamp":"2026-11-03T14:02:11.482913407Z","message":"attribute catalog loaded","service":"human-plugin","version":"2026-10-29.1","count":53,"url":"https://human-token-assets.unico.app/attribute-catalog.json"}
{"severity":"INFO","timestamp":"2026-11-03T14:02:11.731050212Z","message":"database schema ready","service":"human-plugin"}
{"severity":"INFO","timestamp":"2026-11-03T14:02:11.733418901Z","message":"human plugin listening","service":"human-plugin","addr":":8080"}
```

<a id="what-to-alert-on"></a>

## 应针对哪些情况设置告警

- 就绪检查失败:数据库无法访问。
- 您的后端调用反复收到 `503 DATABASE_UNAVAILABLE` 或 `502 UPSTREAM_UNAVAILABLE` 响应。
- 容器重启:循环重启通常意味着缺少设置、目录无法访问或数据库出现问题。日志会说明具体原因。
- 错误级别的日志行,例如 `creating process` 或 `retrieving process`。

Human Plugin 不导出指标。请使用您的网关或服务网格来获取请求速率和延迟。