mirror of
https://github.com/beclab/Olares
synced 2026-04-21 13:37:46 +00:00
* cli, daemon: add `olares-cli status` backed by olaresd /system/status
Adds a new top-level `olares-cli status` command that calls the local
olaresd daemon's `/system/status` HTTP endpoint and prints either a
grouped, annotated human-readable report or raw JSON.
To avoid duplicating the response schema, the daemon's `state` struct
and related enums are extracted into a new shared package
`cli/pkg/daemon/state`. The daemon now type-aliases those types so all
existing daemon call sites keep compiling unchanged.
Made-with: Cursor
* cli: drop unused state.APIResponse envelope type
The HTTP client in cli/pkg/daemon/api/client.go intentionally uses an
inline anonymous envelope with json.RawMessage for the data field so
that --json mode can passthrough the bytes verbatim, so the public
APIResponse{Data State} type defined here had zero references. Remove
it; if a strongly-typed consumer ever shows up, re-add then.
Addresses Cursor Bugbot feedback on PR #2917.
Made-with: Cursor
162 lines
12 KiB
Markdown
162 lines
12 KiB
Markdown
# `status`
|
||
|
||
## 命令说明
|
||
|
||
`status` 命令通过调用本机 olaresd 守护进程的 `/system/status` HTTP 接口,输出当前 Olares 系统的状态。
|
||
|
||
该接口绑定在 `127.0.0.1:18088`,仅接受本地回环流量,因此 `status` 命令必须与 olaresd 运行在同一台机器(通常是主节点)上。
|
||
|
||
```bash
|
||
olares-cli status [选项]
|
||
```
|
||
|
||
默认输出按以下分组展示,便于人工阅读:
|
||
|
||
- **Olares**:安装生命周期、版本、用户名、关键时间戳。
|
||
- **System**:主机的硬件和操作系统信息。
|
||
- **Network**:有线/Wi-Fi 连接状态、内/外网 IP 地址。
|
||
- **Install / Uninstall**:正在进行的安装或卸载进度。
|
||
- **Upgrade**:正在进行的升级进度(包括下载阶段和安装阶段)。
|
||
- **Logs collection**:最近一次日志收集任务的状态。
|
||
- **Pressures**:节点上当前激活的 kubelet 节点压力条件(若有)。
|
||
- **Other**:FRP、容器模式等其他信息。
|
||
|
||
加上 `--json` 可以输出 olaresd 返回的原始 JSON,便于脚本化处理或与 `jq` 等工具配合使用。
|
||
|
||
## 选项
|
||
|
||
| 选项 | 用途 | 是否必需 | 默认值 |
|
||
|--------------|----------------------------------------------------------------------------------------------|----------|--------------------------|
|
||
| `--endpoint` | 本机 olaresd 守护进程的基础 URL。仅当 olaresd 监听在非默认地址时才需要修改。 | 否 | `http://127.0.0.1:18088` |
|
||
| `--json` | 直接输出 olaresd 返回的原始 JSON(即响应中的 `data` 字段),适合配合 `jq` 等工具使用。 | 否 | `false` |
|
||
| `--timeout` | 等待 olaresd 响应的最长时间。 | 否 | `5s` |
|
||
| `--help` | 显示命令帮助。 | 否 | 无 |
|
||
|
||
## 使用示例
|
||
|
||
```bash
|
||
# 默认输出:分组的人工可读报表
|
||
olares-cli status
|
||
|
||
# 原始 JSON 输出,原样转发自 olaresd
|
||
olares-cli status --json | jq
|
||
|
||
# 指定守护进程地址并延长超时时间
|
||
olares-cli status --endpoint http://127.0.0.1:18088 --timeout 10s
|
||
```
|
||
|
||
## 字段参考
|
||
|
||
下表列出 olaresd 返回的字段(即 JSON 响应中 `data` 对象的字段),以及它们在分组输出中显示的标签。
|
||
|
||
### Olares
|
||
|
||
| 字段 | JSON Key | 含义 |
|
||
|------------------|--------------------|--------------------------------------------------------------------------------------------|
|
||
| State | `terminusState` | 系统的高层状态,详见 [状态值列表](#状态值列表)。 |
|
||
| Olaresd state | `terminusdState` | olaresd 守护进程自身的生命周期:启动初始化时为 `initialize`,初始化完成后为 `running`。 |
|
||
| Name | `terminusName` | 管理员的 Olares ID,例如 `alice@olares.cn`。 |
|
||
| Version | `terminusVersion` | 已安装的 Olares 版本(语义化版本号)。 |
|
||
| Olaresd version | `olaresdVersion` | 当前运行的 olaresd 二进制版本。可用于排查升级后的版本漂移。 |
|
||
| Installed at | `installedTime` | Olares 安装完成时间(Unix 时间戳,单位秒)。 |
|
||
| Initialized at | `initializedTime` | 管理员完成初始激活的时间(Unix 时间戳,单位秒)。 |
|
||
|
||
### System
|
||
|
||
| 字段 | JSON Key | 含义 |
|
||
|------------|---------------|--------------------------------------------|
|
||
| Device | `device_name` | 用户友好的设备/机型名称。 |
|
||
| Hostname | `host_name` | 内核报告的主机名。 |
|
||
| OS | `os_type` / `os_arch` / `os_info` | 操作系统类型、CPU 架构、发行版描述。 |
|
||
| OS version | `os_version` | 操作系统版本号,例如 `22.04`。 |
|
||
| CPU | `cpu_info` | CPU 型号。 |
|
||
| Memory | `memory` | 物理内存总量,格式为 `<N> G`。 |
|
||
| Disk | `disk` | 数据分区的文件系统总容量,格式为 `<N> G`。 |
|
||
| GPU | `gpu_info` | 检测到的 GPU 型号(若有)。 |
|
||
|
||
### Network
|
||
|
||
| 字段 | JSON Key | 含义 |
|
||
|-------------|------------------|---------------------------------------------------------------------|
|
||
| Wired | `wiredConnected` | 检测到有线连接时为 `yes`。 |
|
||
| Wi-Fi | `wifiConnected` | 默认路由走 Wi-Fi 时为 `yes`。 |
|
||
| Wi-Fi SSID | `wifiSSID` | 已连接 Wi-Fi 的 SSID。 |
|
||
| Host IP | `hostIp` | Olares 用于互联的内网 IPv4 地址。 |
|
||
| External IP | `externalIp` | 通过外部探测获取的公网 IPv4 地址(每分钟最多刷新一次)。 |
|
||
|
||
### Install / Uninstall
|
||
|
||
| 字段 | JSON Key | 含义 |
|
||
|---------------|-------------------------|-------------------------------------------------------------------|
|
||
| Installing | `installingState` | 进行中的安装任务的生命周期:`in-progress`、`completed`、`failed`。 |
|
||
| | `installingProgress` | 当前安装步骤的描述(在分组输出中以括号形式跟随显示)。 |
|
||
| Uninstalling | `uninstallingState` | 进行中的卸载任务的生命周期。 |
|
||
| | `uninstallingProgress` | 当前卸载步骤的描述。 |
|
||
|
||
### Upgrade
|
||
|
||
| 字段 | JSON Key | 含义 |
|
||
|----------------|--------------------------------|----------------------------------------------------------------------------|
|
||
| Target | `upgradingTarget` | 进行中升级的目标版本。 |
|
||
| State | `upgradingState` | 升级安装阶段的生命周期。 |
|
||
| | `upgradingProgress` | 升级安装阶段的进度描述(括号显示)。 |
|
||
| Step | `upgradingStep` | 当前升级步骤的名称。 |
|
||
| Last error | `upgradingError` | 升级安装阶段最近一次报错信息。 |
|
||
| Download state | `upgradingDownloadState` | 升级下载阶段的生命周期。 |
|
||
| | `upgradingDownloadProgress` | 升级下载阶段的进度描述(括号显示)。 |
|
||
| Download step | `upgradingDownloadStep` | 当前下载步骤的名称。 |
|
||
| Download error | `upgradingDownloadError` | 升级下载阶段最近一次报错信息。 |
|
||
| Retry count | `upgradingRetryNum` | 升级被自动重试的次数(仅当大于 0 时显示)。 |
|
||
| Next retry at | `upgradingNextRetryAt` | 下一次重试的预定时间(仅当存在时显示)。 |
|
||
|
||
### Logs collection
|
||
|
||
| 字段 | JSON Key | 含义 |
|
||
|------------|--------------------------|-----------------------------------------------------------------------|
|
||
| State | `collectingLogsState` | 通过 olaresd 触发的最近一次日志收集任务的生命周期。 |
|
||
| | `collectingLogsError` | 最近一次日志收集任务的错误信息(括号显示)。 |
|
||
|
||
### Pressures
|
||
|
||
`pressures` 数组列出当前节点上为真的 kubelet 节点压力条件。当节点健康时,分组输出中会显示 `(none)`。
|
||
|
||
| 字段 | JSON Key | 含义 |
|
||
|---------|-----------|---------------------------------------------------------------------|
|
||
| Type | `type` | Kubernetes 节点条件类型,例如 `MemoryPressure`、`DiskPressure`。 |
|
||
| Message | `message` | kubelet 给出的可读说明。 |
|
||
|
||
### Other
|
||
|
||
| 字段 | JSON Key | 含义 |
|
||
|----------------|---------------------|---------------------------------------------------------------------|
|
||
| FRP enabled | `frpEnable` | FRP 反向通道是否启用(来自环境变量 `FRP_ENABLE`)。 |
|
||
| FRP server | `defaultFrpServer` | FRP 服务器地址(来自环境变量 `FRP_SERVER`)。 |
|
||
| Container mode | `containerMode` | olaresd 运行在容器内时设置(来自环境变量 `CONTAINER_MODE`)。 |
|
||
|
||
## 状态值列表
|
||
|
||
`terminusState` 字段可能取以下值。CLI 也使用同一份枚举生成描述,因此下表始终与 CLI 输出保持一致。
|
||
|
||
| 取值 | 含义 |
|
||
|-----------------------|-----------------------------------------------------------------|
|
||
| `checking` | olaresd 还未完成首次状态探测。 |
|
||
| `network-not-ready` | 未检测到可用的内网 IPv4 地址。 |
|
||
| `not-installed` | 当前节点未安装 Olares。 |
|
||
| `installing` | Olares 正在安装中。 |
|
||
| `install-failed` | 最近一次安装失败。 |
|
||
| `uninitialized` | Olares 已安装,但管理员账户尚未激活。 |
|
||
| `initializing` | 管理员账户正在激活中。 |
|
||
| `initialize-failed` | 管理员账户激活失败。 |
|
||
| `terminus-running` | Olares 运行正常。 |
|
||
| `restarting` | 节点刚刚重启,状态会在短时间内稳定。 |
|
||
| `invalid-ip-address` | 节点 IP 已变更,需要执行 `change-ip` 恢复。 |
|
||
| `ip-changing` | `change-ip` 操作正在进行。 |
|
||
| `ip-change-failed` | 最近一次 `change-ip` 操作失败。 |
|
||
| `system-error` | 关键 Pod 未正常运行。 |
|
||
| `self-repairing` | olaresd 正在尝试自动修复。 |
|
||
| `adding-node` | 正在加入 worker 节点。 |
|
||
| `removing-node` | 正在移除 worker 节点。 |
|
||
| `uninstalling` | Olares 正在卸载中。 |
|
||
| `upgrading` | 升级正在执行中。 |
|
||
| `disk-modifing` | 存储布局正在调整中。 |
|
||
| `shutdown` | 系统正在关机。 |
|