配置 Synthetics 项目
编辑配置 Synthetics 项目
编辑合成测试支持配置可在项目中使用的动态参数。此外,基于 Playwright 构建的 Synthetics 代理支持配置 Playwright 特定方法中可用的浏览器和上下文选项,例如 ignoreHTTPSErrors
、extraHTTPHeaders
和 viewport
。
在 Synthetics 项目的根目录中创建一个 synthetics.config.js
或 synthetics.config.ts
文件并指定选项。例如
import type { SyntheticsConfig } from '@elastic/synthetics'; export default env => { const config: SyntheticsConfig = { params: { url: 'https://elastic.ac.cn', }, playwrightOptions: { ignoreHTTPSErrors: false, }, /** * Configure global monitor settings */ monitor: { schedule: 10, locations: [ 'us_east' ], }, /** * Project monitors settings */ project: { id: 'my-project', url: 'https://abc123', space: 'custom-space', }, }; if (env !== 'development') { /** * Override configuration specific to environment * For example, config.params.url = "" */ } return config; };
上面示例中的 env
是你推送的环境,而不是监控器将运行的环境。换句话说,env
对应于配置的 NODE_ENV
。
配置文件可以导出对象,也可以导出在调用时应返回生成的配置的函数。要了解有关基于环境配置测试的更多信息,请参阅动态配置文档。
params
编辑一个 JSON 对象,用于定义测试所需的任何变量。请在使用参数和密钥中阅读更多信息。
playwrightOptions
编辑有关所有可用选项,请参阅 Playwright 文档。
通过 Elastic 的全局托管测试基础架构或私有位置运行时,请勿尝试以有头模式(使用 headless:false
)运行,因为这不受支持。
下面是有关一些与 Elastic Synthetics 特别相关的 Playwright 选项的详细信息,包括 TLS 客户端身份验证、超时、时区和设备模拟。
TLS 客户端身份验证
编辑要启用 TLS 客户端身份验证,请在配置文件中设置 clientCertificates
选项
基于路径的选项 {certPath, keyPath, pfxPath}
仅在私有位置上受支持,在 Elastic 托管的位置上运行时,请参考内存中的替代方案 {cert, key, pfx}
。
playwrightOptions: { clientCertificates: [ { origin: 'https://example.com', certPath: './cert.pem', keyPath: './key.pem', passphrase: 'mysecretpassword', }, { origin: 'https://example.com', cert: Buffer.from("-----BEGIN CERTIFICATE-----\n..."), key: Buffer.from("-----BEGIN RSA PRIVATE KEY-----\n..."), passphrase: 'mysecretpassword', } ], }
使用 Synthetics 监控器 UI 时,可以使用字符串字面量简单地指定 cert
、key
和 pfx
clientCertificates: [ { cert: "-----BEGIN CERTIFICATE-----\n...", // Not cert: Buffer.from("-----BEGIN CERTIFICATE-----\n..."), } ],
超时
编辑Playwright 有两种类型的超时在 Elastic Synthetics 中使用:操作和导航超时。
Elastic Synthetics 使用 50 秒的默认操作和导航超时。你可以使用 actionTimeout
和 navigationTimeout
在 playwrightOptions
中覆盖此默认值。
时区和区域设置
编辑Elastic 全局托管测试基础架构当前未设置时区。对于私有位置,监控器将使用运行 Elastic Agent 的主机的时区。如果你想测试 Web 应用程序在不同时区中的行为方式,这并不总是理想的。要指定监控器运行时使用的时区,你可以在每个监控器或全局基础上使用 playwrightOptions
。
要为项目中的所有监控器使用时区和/或区域设置,请在配置文件中设置 locale
和/或 timezoneId
playwrightOptions: { locale: 'en-AU', timezoneId: 'Australia/Brisbane', }
要为特定监控器使用时区和/或区域设置,请使用 monitor.use
将这些选项添加到旅程中。
设备模拟
编辑用户可以使用配置文件模拟移动设备。下面的示例配置在“Pixel 5”模拟模式下运行测试。
import { SyntheticsConfig } from "@elastic/synthetics" import { devices } from "playwright-chromium" const config: SyntheticsConfig = { playwrightOptions: { ...devices['Pixel 5'] } } export default config;
project
编辑有关项目的信息。
-
id (
string
) -
与你的项目关联的唯一 ID。它将用于逻辑分组监控器。
如果你使用
init
创建了一个项目,这就是你指定的<项目名称>
。 -
url (
string
) - 要将监控器上传到的部署的 Kibana URL。
-
space (
string
) - 推送监控器的目标 Kibana 空间的标识符。空间可帮助你组织推送的监控器。如果未指定,则会推送到“default”空间。
monitor
编辑使用 @elastic/synthetics
push
命令时,要应用于所有监控器的默认值。
-
id
(string
) - 此监控器的唯一标识符。
-
name
(string
) - 监控器的人工可读名称。
-
tags
(Array<string>
) - 将随监控器事件发送的标签列表。标签显示在 Synthetics 应用程序中,允许你按标签搜索监控器。
-
schedule
(number
) - 监控器应运行的间隔(以分钟为单位)。
-
enabled
(boolean
) - 启用或禁用监控器运行,而无需删除和重新创建它。
-
locations
(Array<SyntheticsLocationsType>
) -
在哪里部署监控器。监控器可以部署在多个位置,以便你可以检测这些位置的可用性和响应时间的差异。
要列出可用的位置,你可以
- 运行
elastic-synthetics locations
命令。 - 在全局搜索字段中查找
Synthetics
,然后单击创建监控器。位置将列在“位置”中。
- 运行
-
privateLocations
(Array<string>
) -
要部署监控器的私有位置。这些私有位置是指由你托管和管理的位置,而
locations
由 Elastic 托管。你可以使用位置的名称指定私有位置。要列出可用的私有位置,你可以
- 运行
elastic-synthetics locations
命令,并提供从中获取可用位置的部署的 Kibana URL。 - 在全局搜索字段中查找
Synthetics
,然后单击创建监控器。私有位置将列在“位置”中。
- 运行
-
throttling
(boolean
|ThrottlingOptions
) - 控制监控器的下载速度、上传速度和延迟,以模拟你的应用程序在较慢或较慢的网络上的行为。设置为
false
可完全禁用限制。 -
screenshot
(ScreenshotOptions
) - 控制是否捕获屏幕截图。选项包括
'on'
、'off'
或'only-on-failure'
。 -
alert.status.enabled
(boolean
) - 启用或禁用监控器状态警报。请在警报中阅读有关警报的更多信息。
-
retestOnFailure
(boolean
) -
启用或禁用监控器失败时的重新测试。默认值为
true
。默认情况下,如果监控器从“正常”变为“故障”,则会自动重新测试监控器。如果重新测试的结果也是“故障”,则会创建一个错误,并且如果已配置,则会发送警报。然后,监控器将按照定义的计划恢复运行。使用
retestOnFailure
可以减少与瞬态问题相关的噪声。 -
fields
(object
) -
将随每个监控器事件发送的键值对列表。
fields
作为labels
追加到 Elasticsearch 文档,这些标签显示在 Kibana 的各个监控器的概述选项卡中的监控器详细信息面板中。例如
fields: { foo: 'bar', team: 'synthetics', }
有关单独配置监控器的信息,请参阅