> ## 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 的数据源，包括 Prometheus、Elasticsearch、Loki、ClickHouse、MySQL、Oracle、PostgreSQL、Aliyun SLS、Tencent CLS、VictoriaLogs 等类型

数据源是告警引擎查询数据的来源。你需要先配置数据源，告警引擎才能从中读取数据进行异常判定。

**菜单入口**：数据源

## 支持的数据源类型

Monitors 支持以下 10 种数据源类型：

| 类型                | 说明                              |
| ----------------- | ------------------------------- |
| **Prometheus**    | 时序数据库，通过 PromQL 查询              |
| **Elasticsearch** | 分布式搜索与分析引擎                      |
| **Loki**          | 轻量级日志聚合系统                       |
| **ClickHouse**    | 列式分析数据库                         |
| **MySQL**         | 关系型数据库                          |
| **Oracle**        | 关系型数据库                          |
| **PostgreSQL**    | 关系型数据库                          |
| **Aliyun SLS**    | 阿里云日志服务                         |
| **Tencent CLS**   | 腾讯云日志服务                         |
| **VictoriaLogs**  | 日志数据库，VictoriaMetrics 生态的日志解决方案 |

## 数据源列表

数据源列表展示所有已配置的数据源，包括以下信息：

* **名称**：数据源的标识名称
* **类型**：数据源类型及图标
* **连接地址**：数据源的访问地址
* **关联告警引擎**：绑定的告警引擎集群名称，附带引擎在线状态指示
* **备注**：补充说明

你可以通过搜索框按名称或类型过滤数据源。列表每 5 秒自动刷新，实时反映引擎连接状态。

## 新建数据源

<Steps>
  <Step title="选择数据源类型">
    点击**新建**按钮，在表单顶部选择数据源类型（如 Prometheus、MySQL 等）。
  </Step>

  <Step title="填写基本信息">
    | 配置项        | 说明                                           |
    | ---------- | -------------------------------------------- |
    | **名称**     | 数据源的唯一标识名称，告警规则可通过名称通配或精确匹配两种方式关联数据源（详见下方说明） |
    | **备注**     | 可选的补充说明                                      |
    | **关联告警引擎** | 选择负责查询该数据源的引擎集群，通常选择与数据源同机房的集群               |
  </Step>

  <Step title="配置连接参数">
    根据数据源类型填写对应的连接参数，详见下方各类型说明。
  </Step>

  <Step title="保存">
    点击**确定**完成创建。
  </Step>
</Steps>

### 告警规则关联数据源的两种方式

告警规则支持两种方式绑定数据源，可以同时使用，至少填写一种。规则会作用于两种方式匹配到的所有数据源的并集。

| 绑定方式     | 字段          | 匹配逻辑                                            | 适用场景                       |
| -------- | ----------- | ----------------------------------------------- | -------------------------- |
| **名称通配** | `数据源（名称通配）` | 按名称做通配符匹配。`*` 匹配所有数据源；`Prom*` 匹配名称以 Prom 开头的数据源 | 需要动态匹配一批数据源，例如同类型数据源统一命名前缀 |
| **精确匹配** | `数据源（精确匹配）` | 按数据源 ID 精确关联，从下拉列表中选择具体数据源                      | 需要精确绑定特定数据源，不受数据源改名影响      |

<Warning>
  名称通配方式存储的是名称字符串，如果数据源改名，已有的通配规则可能不再匹配。精确匹配方式存储的是数据源 ID，不受改名影响。如果对稳定性要求高，建议优先使用精确匹配。
</Warning>

## 各数据源类型配置

### Prometheus

| 配置项                      | 说明                                          |
| ------------------------ | ------------------------------------------- |
| **Server URL**           | Prometheus 服务地址，如 `http://localhost:9090`   |
| **Headers**              | 自定义 HTTP 请求头，支持添加多组 Key-Value               |
| **Params**               | 自定义 URL 查询参数，支持添加多组 Key-Value               |
| **Basic Authentication** | 启用后需填写用户名和密码                                |
| **使用自定义 CA 证书**          | 勾选后填写 CA 证书内容；留空时使用告警引擎所在操作系统的系统信任库         |
| **启用客户端证书认证（mTLS）**      | 勾选后填写客户端证书和客户端私钥，两者必须成对填写                   |
| **服务端名称（可选）**            | 用于 SNI 和证书主机名校验；留空时从连接地址推断                  |
| **最低 / 最高 TLS 版本**       | 可选 TLS 1.0、1.1、1.2、1.3，默认为系统默认；最低版本不得高于最高版本 |
| **跳过服务端证书校验**            | 勾选后不校验服务端证书                                 |

### MySQL / Oracle / PostgreSQL

关系型数据库共享相似的配置结构：

| 配置项           | 说明                                                                                    | 默认值  |
| ------------- | ------------------------------------------------------------------------------------- | ---- |
| **连接地址**      | 数据库地址，如 `localhost:3306`（MySQL）、`localhost:1521`（Oracle）、`localhost:5432`（PostgreSQL） | -    |
| **最大连接数**     | 连接池最大打开连接数                                                                            | 32   |
| **空闲连接数**     | 连接池最大空闲连接数                                                                            | 4    |
| **连接存活时长（秒）** | 连接最大存活时间                                                                              | 600  |
| **超时时间（毫秒）**  | 查询超时时间                                                                                | 5000 |
| **用户名**       | 数据库用户名                                                                                | -    |
| **密码**        | 数据库密码                                                                                 | -    |

Oracle 在上述基础连接配置之外，还支持通过 **Options** 添加多组连接选项。MySQL 和 PostgreSQL 额外支持 TLS/SSL 加密连接，通过 **TLS/SSL 模式** 下拉框选择。

#### MySQL 的 TLS/SSL 模式

| 模式                           | 说明                                          |
| ---------------------------- | ------------------------------------------- |
| **不启用 TLS**（disable）         | 连接不经过 TLS 加密                                |
| **加密连接，不校验证书**（require）      | 强制使用 TLS 加密，但不验证数据库服务器身份；该模式下不允许配置自定义 CA 证书 |
| **校验证书和主机名**（verify-full，推荐） | 验证服务端证书的签发机构，并校验证书中的主机名；该模式下可配置自定义 CA 证书    |

选择非「不启用 TLS」模式后，还可以启用客户端证书认证（mTLS，客户端证书和客户端私钥需成对填写）、填写服务端名称，以及设置最低 / 最高 TLS 版本。选择「校验证书和主机名」模式时，连接地址建议填写与服务端证书匹配的数据库域名，不要使用 IP 地址。

<Warning>
  设置非「不启用 TLS」模式时，关联告警引擎集群内所有已注册的 Edge 实例必须为 v0.51.0 或更高版本。
</Warning>

#### PostgreSQL 的 TLS/SSL 模式

| 模式                           | 说明                                          |
| ---------------------------- | ------------------------------------------- |
| **不启用 TLS**（disable）         | 连接不经过 TLS 加密                                |
| **加密连接，不校验证书**（require）      | 强制使用 TLS 加密，但不验证数据库服务器身份；该模式下不允许配置自定义 CA 证书 |
| **校验证书颁发机构**（verify-ca）      | 验证服务端证书是否由可信的证书颁发机构签发，但不校验证书中的主机名           |
| **校验证书和主机名**（verify-full，推荐） | 验证服务端证书的签发机构，并校验证书中的主机名是否与连接地址一致            |

在「校验证书颁发机构」和「校验证书和主机名」模式下可选填自定义 CA 证书，留空时使用告警引擎所在操作系统的系统信任库；非「不启用 TLS」模式下均可启用客户端证书认证（mTLS）。选择「校验证书和主机名」模式时，连接地址请填写与服务端证书匹配的数据库域名，不要使用 IP 地址。

<Warning>
  设置非「不启用 TLS」模式时，关联告警引擎集群内所有已注册的 Edge 实例必须为 v0.50.0 或更高版本。
</Warning>

### Elasticsearch

Elasticsearch 支持 Cloud 与 Self-Managed 两种部署方式，默认选择 Cloud。

| 配置项               | Cloud | Self-Managed   | 默认值  |
| ----------------- | ----- | -------------- | ---- |
| **Cloud ID**      | 必填    | -              | -    |
| **API Key**       | 必填    | -              | -    |
| **连接地址**          | -     | 必填，支持用逗号分隔多个节点 | -    |
| **查询超时时间（毫秒）**    | 支持    | 支持             | 5000 |
| **Headers**       | -     | 可添加多组自定义请求头    | -    |
| **用户名 / 密码**      | -     | 必填             | -    |
| **Service Token** | -     | 可选             | -    |
| **CA 证书**         | -     | 可选             | -    |
| **证书指纹**          | -     | 可选             | -    |

### Loki / VictoriaLogs

Loki 与 VictoriaLogs 使用和 Prometheus 相同的 HTTP 连接结构：服务地址、Headers、Params、Basic Authentication，以及自定义 CA、mTLS、服务端名称、TLS 版本和跳过证书校验等 TLS 配置。

| 类型               | 服务地址示例                  |
| ---------------- | ----------------------- |
| **Loki**         | `http://localhost:3100` |
| **VictoriaLogs** | `http://localhost:9428` |

上述地址是输入框示例，不会自动保存为默认值。

### ClickHouse

| 配置项            | 说明                                 | 默认值  |
| -------------- | ---------------------------------- | ---- |
| **连接地址**       | ClickHouse Native 协议地址，支持用逗号分隔多个节点 | -    |
| **最大连接数**      | 连接池最大打开连接数                         | 32   |
| **空闲连接数**      | 连接池最大空闲连接数                         | 4    |
| **连接生命周期（秒）**  | 连接最大存活时间                           | 600  |
| **查询超时时间（毫秒）** | 单次查询超时时间                           | 5000 |
| **最大执行时间（秒）**  | 发送给 ClickHouse 的查询执行时间上限           | 60   |
| **连接超时时间（毫秒）** | 建立连接的超时时间                          | 2000 |
| **用户名 / 密码**   | ClickHouse 身份认证信息                  | -    |
| **Database**   | 可选的默认数据库                           | -    |

开启 **TLS** 后，还可以配置自定义 CA、mTLS、服务端名称、最低 / 最高 TLS 版本和跳过服务端证书校验。关闭 TLS 时，表单会清除这些 TLS 字段。

### Aliyun SLS

| 配置项                  | 说明                                                                       |
| -------------------- | ------------------------------------------------------------------------ |
| **Endpoint**         | SLS 接入点，例如 `cn-hangzhou.log.aliyuncs.com`。不要包含 `http://` 或 `https://` 前缀 |
| **Headers**          | 可选的自定义请求头，支持添加多组 Key-Value                                               |
| **AccessKey ID**     | 阿里云访问密钥 ID，必填                                                            |
| **AccessKey Secret** | 阿里云访问密钥，必填                                                               |

SLS 表单不提供单独的 TLS 选项。AccessKey ID 与 AccessKey Secret 支持下文介绍的 Edge 环境变量引用。

### Tencent CLS

Tencent CLS（腾讯云日志服务）数据源供告警规则查询腾讯云 CLS 的日志主题使用。表单包含接入方式、身份认证、集群能力门禁与连接测试四部分。

#### 接入方式

| 配置项      | 说明                                                                                                                                  |
| -------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| **接入方式** | Edge 访问腾讯云 CLS 的接入点，二选一：**公网**（`cls.tencentcloudapi.com`）或 **腾讯云内网**（`cls.internal.tencentcloudapi.com`）。Edge 部署在腾讯云上时选择内网，可省公网流量费用 |

编辑已保存的数据源时，如果接入地址不是上述两个接入点之一（例如通过 API 配置了其他地域接入点或自定义域名），表单会提示**当前接入点不受支持**，重新选择公网或内网后才能保存。

#### 身份认证

| 配置项           | 说明                     |
| ------------- | ---------------------- |
| **SecretId**  | 腾讯云 API 密钥 ID，必填       |
| **SecretKey** | 腾讯云 API 密钥，必填；保存后只写不回显 |

两个字段均支持两种写法：

* **字面量**：直接填写密钥值。
* **环境变量引用**：填写 `${env:VAR_NAME}`，由每台 Edge 在本地解析，解析后的值不会回传控制面。变量名只能使用大写字母、数字和下划线，例如 `${env:TENCENT_CLS_SECRET_KEY}`；写了 `${env:` 但格式不完整时表单会直接报错。

SecretKey 为只写字段：保存后列表与详情均不返回字面量密钥。编辑时如果服务端存有字面量密钥，该字段显示为固定掩码（`••••••••••••`），点击**修改**图标后切换为输入框，留空表示保持原值；以 `${env:}` 引用保存的密钥不是秘密，会正常回显。

#### 集群能力门禁

腾讯云 CLS 要求告警引擎集群内所有 Edge 实例达到最低版本。表单会根据所选**关联告警引擎**集群实时检查，任一实例不达标都会给出提示：

| 状态                 | 提示                                       |
| ------------------ | ---------------------------------------- |
| **mixed\_version** | 告警引擎集群中存在版本过低的实例，需要将集群内全部实例升级到提示的最低版本或更高 |
| **unsupported**    | 告警引擎版本过低，暂不支持腾讯云 CLS                     |
| **unavailable**    | 没有找到已注册的告警引擎                             |

该门禁在告警规则页同样生效：集群可能因回滚或新加入旧实例而退化，届时即使数据源已存在，保存规则也会被后端拒绝。

#### 连接测试

保存数据源后可使用**连接测试**验证连接：

1. 新建状态下测试不可用，需先保存数据源（提示「保存数据源后才能测试连接」）。
2. 选择用于测试的地域。数据源本身不保存地域，测试时现场选择一次。
3. 点击**测试**。请求按所选地域路由到单个 Edge 实例执行，结果标注**仅当前执行实例**，不代表整个集群都已验证。
4. 失败时结果会透出腾讯云返回的原始错误码与 RequestId，可直接用于排查。

测试结果分为**连接正常**、**连接可用，但有告警**与**连接失败**三种。

#### 地域选择

规则查询与连接测试共用同一个地域选择器，提供常用地域建议列表：广州（ap-guangzhou）、上海（ap-shanghai）、北京（ap-beijing）、南京（ap-nanjing）、成都（ap-chengdu）、重庆（ap-chongqing）、中国香港（ap-hongkong）、新加坡（ap-singapore）、曼谷（ap-bangkok）、雅加达（ap-jakarta）、首尔（ap-seoul）、东京（ap-tokyo）、硅谷（na-siliconvalley）、弗吉尼亚（na-ashburn）、法兰克福（eu-frankfurt）、圣保罗（sa-saopaulo）、利雅得（me-saudi-arabia）。该列表只是建议而非白名单——腾讯云随时可能开设新地域，因此也可以输入任意符合 `[a-z0-9-]` 形状的地域 code，能否使用由腾讯云判定。

#### 规则绑定约束

Tencent CLS 类型的告警规则只能精确绑定一个数据源，不支持名称通配。创建规则时数据源选择为单选、名称通配输入被隐藏；配置非法时保存会提示「该数据源类型只能绑定一个数据源」或「该数据源类型不支持名称通配，请清空后重新选择」。详见 [Tencent CLS 告警规则](/zh/monitors/alert-rules/tencent-cls)。

## 在 Edge 本地引用凭据

使用 `v0.46.0` 或更高版本的 Edge 时，你可以在受支持的数据源连接字段中使用环境变量引用，而不必将凭据直接写入数据源配置。Edge 会在本地进程中解析引用值；解析后的凭据不会回写到同步的数据源配置、调试输出或 API 载荷中。

<Steps>
  <Step title="设置 Edge 进程环境变量">
    在每个负责查询该数据源的 Edge 进程环境中设置凭据。例如，为 SLS 设置 `SLS_ACCESS_KEY_ID` 和 `SLS_ACCESS_KEY_SECRET`。修改环境变量后，重启 Edge 进程使新值生效。
  </Step>

  <Step title="在数据源表单中填写引用">
    编辑数据源时，在受支持的认证或连接字段中填写 `${env:变量名}`。例如，SLS 的 **AccessKey ID** 与 **AccessKey Secret** 可以分别填写 `${env:SLS_ACCESS_KEY_ID}` 和 `${env:SLS_ACCESS_KEY_SECRET}`。
  </Step>

  <Step title="保存并测试">
    保存数据源后，使用 **测试** 验证连接。每个引用的变量都必须存在于对应 Edge 进程环境中。
  </Step>
</Steps>

变量名必须以大写字母或下划线开头，后续只能包含大写字母、数字或下划线，例如 `SLS_ACCESS_KEY_SECRET`。

<Warning>
  不能在数据源**连接地址**中使用环境变量引用；Prometheus、Loki 与 VictoriaLogs 的 **Params** 也不支持引用。请只在受支持的认证和连接字段中使用该语法。
</Warning>

## 测试数据源

在数据源列表中，点击对应数据源的**测试**按钮，可以打开查询预览窗口，验证数据源连接是否正常并预览查询结果。

## 编辑和删除

* **编辑**：在数据源列表中点击**编辑**按钮，修改数据源配置后保存。
* **删除**：在数据源列表中点击**删除**按钮，确认后删除数据源。

<Warning>
  删除数据源前，请确保没有告警规则引用该数据源，否则相关告警规则将无法正常执行。
</Warning>
