# 管理后台使用说明：操作日志功能

URL: https://docs.ones.cn/deploy/configure/ones-admin/ones-admin-auditlog-usage

本文面向实施维护人员，说明如何在 ONES 管理后台查看和导出操作日志。

管理后台打开方式请参考： [打开管理后台](https://docs.ones.cn/deploy/configure/ones-admin/open-ones-admin/) 。

## 1. 功能说明

`操作日志` 页面用于查看管理后台内的关键操作记录，方便实施维护人员追溯"谁在什么时间做了什么操作"。

当前常见记录包括：

- 巡检任务创建、定时巡检配置更新、巡检报告导出。
- 数据备份任务创建、备份日志导出。
- 操作日志导出。
注意：

- 操作日志只记录管理后台相关操作，不等同于 ONES 业务系统内的普通操作日志。
- 操作日志用于审计和排查，不用于恢复数据。
- 如果页面没有记录，先检查时间范围是否选对。

## 2. 登录和入口

浏览器访问：

```text
http://<管理后台访问地址>/ones-admin/
```

登录成功后，在左侧菜单点击 `操作日志` 。

如果需要使用英文界面查看或截图，可以访问：

```text
http://<管理后台访问地址>/ones-admin/?locale=en-US#/audit-logs
```

页面示例：

![Audit log list](https://docs.ones.cn/assets/images/auditlog-list-en-84022cdea46addee102e7d8a7c07690c.png)

## 3. 查看日志列表

进入 `操作日志` 页面后，列表会按操作时间倒序展示日志。

重点查看以下信息：

- `操作时间` ：操作发生的时间。
- `操作人` ：执行操作的管理员账号。
- `操作类型` ：例如创建备份任务、导出操作日志。
- `具体描述` ：本次操作的简要说明。
- `结果` ：成功或失败。
- `来源 IP` ：管理后台记录到的访问来源 IP。
排查问题时，建议先确认：

1. 操作时间是否和现场反馈时间一致。
2. 操作人是否为预期管理员。
3. 操作结果是否为成功。
4. 具体描述中是否包含任务 ID、报告 ID 或导出数量。

## 4. 按时间范围查看

页面默认展示最近 7 天的操作日志。

如需查看其他时间段，可以点击顶部时间范围选择器，选择开始日期和结束日期。

![Audit log date range](https://docs.ones.cn/assets/images/auditlog-date-range-en-c61fe279a9b17e382401f107103d6c5d.png)

注意：

- 单次查询时间范围不要超过 31 天。
- 如果查不到记录，可以适当扩大时间范围后重试。
- 如果日志量较多，建议缩小时间范围，按天或按周排查。

## 5. 导出 CSV

如需把当前时间范围内的日志导出给现场负责人或研发排查，可以点击右上角 `导出 CSV` 。

操作步骤：

1. 先选择需要导出的时间范围。
2. 点击 `导出 CSV` 。
3. 浏览器会下载 `audit-logs-<时间>.csv` 文件。
4. 导出完成后，导出操作本身也会写入一条操作日志。
导出后的记录示例：

![Audit log export record](https://docs.ones.cn/assets/images/auditlog-export-record-en-b7098f1ee16f85feb0a493d7d35e777e.png)

注意：

- 单次导出最多 1000 条记录。
- 如果导出失败，先缩小时间范围后重试。
- 导出的 CSV 中包含操作人、操作类型、结果、来源 IP 等信息，转发前请确认接收人范围。

## 6. 容器内检查

如果页面无法打开，或者怀疑页面展示异常，可以在操作容器内检查数据库记录。

生产环境在部署机执行：

```sh
./ones-ai-k8s.sh
```

进入容器后切到部署目录：

```sh
cd /data/ones/ones-ai-k8s
```

查询最近 20 条管理后台操作日志：

```sh
MYSQL_PWD="$(sed -n 's/^mysqlPassword:[[:space:]]*//p' config/private.yaml | head -1)"

kubectl -n ones exec mysql-cluster-mysql-0 -c mysql -- \
  env MYSQL_PWD="$MYSQL_PWD" \
  mysql -uones -N ones_admin -e \
  "SELECT id, FROM_UNIXTIME(occurred_at/1000), actor_display_name, actor_email, feature_id, result, ip FROM admin_audit_logs ORDER BY id DESC LIMIT 20;"
```

重点确认：

- `actor_display_name` 、 `actor_email` 是否为预期操作人。
- `feature_id` 是否对应现场操作类型。
- `result` 是否为 `success` 。
- `occurred_at` 对应的时间是否在排查范围内。
不建议直接修改 `admin_audit_logs` 表。能进入管理后台时，请优先通过页面查看和导出。

## 7. 常见问题

### 页面没有操作日志

常见原因：

- 当前时间范围内没有管理后台操作。
- 选择的时间范围不正确。
- 该操作暂未接入管理后台操作日志。
可以先把时间范围调大到最近 7 天或最近 31 天内重试。

### 导出 CSV 失败

常见原因：

- 时间范围超过 31 天。
- 当前范围内记录超过 1000 条。
- 管理后台服务或数据库暂时异常。
建议先缩小时间范围，再重新导出。

### 为什么导出后多了一条操作日志

这是正常现象。导出操作日志本身属于审计行为，系统会记录一条 `导出操作日志` 的日志。

### 来源 IP 看起来像集群内地址

如果管理后台前面经过 Ingress、NodePort 或代理，来源 IP 可能显示为代理或集群内地址。排查真实来源时，需要结合现场网络链路和代理日志一起确认。

### 操作日志和 ONES 业务操作日志有什么区别

管理后台 `操作日志` 只记录管理后台内的维护动作。ONES 业务系统内的项目、任务、权限等业务操作，需要到对应业务系统或业务日志中查看。
