> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flashduty.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 监控对象概览

> 了解 Monitors 监控对象的含义、monit-agent 的作用，以及对象如何自动出现在页面上

监控对象是 Monitors 可以查询和诊断的目标。安装并启动 `monit-agent` 后，平台会自动展示 Agent 能诊断的主机、数据库和中间件对象。

## 为什么需要 monit-agent

传统可观测性数据通常包括指标、日志、链路追踪和告警事件。这些数据能帮助你判断“发生了什么”，但在实际排障时，经常还需要进一步确认现场状态，例如：

* 当前机器上哪些进程占用 CPU 或内存较高。
* 某个端口、域名或服务是否能从目标机器访问。
* 磁盘、挂载点、网卡、连接数等运行状态是否异常。
* MySQL 当前变量、连接状态、关键指标或只读 SQL 查询结果。
* Redis 内存、命中率、慢查询或任意只读命令执行结果。
* PostgreSQL 连接活动、锁等待、慢查询或只读 SQL 查询结果。
* MongoDB 副本集状态、当前操作、只读管理命令执行结果。
* Kafka 集群 Broker 状态、消费者延迟、Topic 和 Group 详情。
* Elasticsearch 集群健康、节点指标、索引统计和分片分配。

这些问题只靠已经采集上来的数据不一定能回答，很多时候需要“连到现场查一下”。`monit-agent` 就是为这个场景设计的。

在 AI-SRE 场景下，可以把 LLM 理解为诊断大脑，把 `monit-agent` 理解为部署在用户环境里的现场执行端。用户用自然语言提出问题后，LLM 负责理解问题、选择合适的诊断工具并解释结果；`monit-agent` 负责在目标主机或目标服务附近执行受控查询，并把结构化结果返回给系统。

<Warning>
  `monit-agent` 的重点不是让 LLM 获得无限制的执行权限，而是提供一个安全、受控、可审计的执行边界。Agent 内置工具白名单、参数校验、命令限制、超时控制、输出截断、敏感信息脱敏、本地禁用开关和审计记录。
</Warning>

## 技术架构

![monit-agent connectivity architecture](https://static.flashcat.cloud/images/flashmonit/monit-agent-architecture.svg)

`monit-agent` 通过 WebSocket 连接到同网络区域内的 `monitedge`。`monitedge` 再通过 WebSocket 连接到 SaaS 中心。通常每个网络区域部署一套 `monitedge`，同一个 `EngineName` 的多个 `monitedge` 实例会被视为同一套引擎集群。

## 支持的对象类型

| 对象类型           | 含义                                       | 页面上的地址示例                               |
| -------------- | ---------------------------------------- | -------------------------------------- |
| 主机             | 安装并运行 `monit-agent` 的服务器                 | `10.0.1.12`、`host-prod-01.example.com` |
| MySQL          | 在 `agent.yaml` 中配置的 MySQL 实例             | `db-prod-01.example.com:3306`          |
| Redis          | 在 `agent.yaml` 中配置的 Redis 实例             | `redis-prod-01.example.com:6379`       |
| Redis Sentinel | 在 `agent.yaml` 中配置的 Redis Sentinel 进程    | `10.1.2.10:26379`                      |
| PostgreSQL     | 在 `agent.yaml` 中配置的 PostgreSQL 实例        | `pg-prod-01.example.com:5432`          |
| MongoDB        | 在 `agent.yaml` 中配置的 MongoDB 实例（mongod）   | `10.1.3.10:27017`                      |
| MongoDB Mongos | 在 `agent.yaml` 中配置的 MongoDB 路由进程（mongos） | `10.1.3.20:27017`                      |
| Kafka          | 在 `agent.yaml` 中配置的 Kafka 集群             | `prod-order-kafka`（`cluster_name`）     |
| Elasticsearch  | 在 `agent.yaml` 中配置的 Elasticsearch 集群     | 自动从集群获取 `cluster_name`                 |

安装并启动 `monit-agent` 后，页面上至少会出现一个主机对象。其他对象类型需要在 `agent.yaml` 中配置后才会出现。

<Tip>
  对象标识（`target_locator`）建议使用稳定、容易识别的值，例如固定内网 IP 或 DNS 名称。不要使用 `localhost`、`127.0.0.1` 这类只在本机有意义的地址作为页面展示地址。
</Tip>

## 对象如何出现在页面上

监控对象不需要在页面上手工创建。你只需要在目标机器上安装并启动 `monit-agent`。Agent 成功连接到 Edge 后，会自动把自己能诊断的对象上报到平台，页面就会展示这些对象。

因此，新用户首次进入监控对象页面时列表为空，通常表示还没有任何 Agent 成功接入。接入第一台 Agent 后，页面一般会先出现一个主机对象；如果后续在配置文件中增加 MySQL、Redis、PostgreSQL 等服务，对应的对象也会自动出现。

## 建议接入路径

<Steps>
  <Step title="安装并启动 monit-agent">
    先接入主机对象，确认 Agent 可以连接 Edge，并能在页面展示当前主机。
  </Step>

  <Step title="配置数据库和中间件对象">
    在 `agent.yaml` 中逐步添加 MySQL、Redis、PostgreSQL、MongoDB、Kafka、Elasticsearch 等对象。
  </Step>

  <Step title="按需开启受控查询工具">
    对象出现后，再按需开启 `mysql.query`、`redis.command`、`postgres.query`、`mongodb.command`、`elasticsearch.cat` 等受控查询工具。
  </Step>
</Steps>

## 相关文档

<CardGroup cols={2}>
  <Card title="安装 monit-agent" icon="download" href="/zh/monitors/targets/install-agent">
    准备 Edge 地址，下载 Agent，并配置前台启动或系统服务。
  </Card>

  <Card title="配置监控对象" icon="sliders" href="/zh/monitors/targets/configure-targets">
    配置主机、数据库、中间件和自定义脚本工具。
  </Card>
</CardGroup>
