使用项目监视器创建监视器

编辑

项目是在 Elastic Stack 中配置合成监视器的最强大和最复杂的方法。项目允许您将基础设施定义为代码,通常称为 IaaC 或 GitOps。使用项目监视器,您可以组织文件系统上的 YAML 配置和 JavaScript 或 TypeScript 定义的监视器,使用 Git 进行版本控制,并通过 CLI 工具(通常在 CI/CD 平台上执行)进行部署。

synthetics get started projects

这是您可以用来设置合成监视器的 两种方法 之一。

先决条件
编辑

您必须以至少具有 合成写入权限 的用户身份登录 Kibana,并且必须由管理员启用监视器管理,如 设置角色 中所述。

使用项目需要使用 Elastic Synthetics CLI 工具,该工具可以通过 npx @elastic/synthetics 命令调用。在开始之前,您需要

  1. 安装 Node.js
  2. 安装软件包

    npm install -g @elastic/synthetics
  3. 确认您的系统已正确设置

    npx @elastic/synthetics -h

在开始之前,您还应该决定在哪里运行监视器。您可以在以下一个或两个位置运行项目监视器

  • Elastic 的全球托管测试基础设施: 使用 Elastic 的全球托管测试基础设施,您可以在多个位置创建和运行监视器,而无需管理您自己的基础设施。Elastic 会为您处理软件更新和容量规划。
  • 私有位置: 私有位置允许您从您自己的场所运行监视器。要使用私有位置,您必须先创建私有位置,然后再继续。有关分步说明,请参阅 监控私有网络上的资源

如果您正在为使用 流量过滤器 配置的部署设置 Synthetics,则连接到 Elasticsearch 会受到限制,并且结果将无法写回 Elasticsearch,除非授予权限。有关更多详细信息,请参阅 将 Synthetics 与流量过滤器一起使用

创建项目
编辑

首先创建您的第一个项目。运行以下命令以在当前目录中创建名为 projects-test 的新项目。

npx @elastic/synthetics init projects-test

然后,按照屏幕上的提示设置项目的正确默认变量。完成后,在您的终端中设置 SYNTHETICS_API_KEY 环境变量,该变量用于与您的 Elastic Stack 进行身份验证

  1. 要生成 API 密钥

    1. 全局搜索字段 中找到 Synthetics
    2. 点击 设置
    3. 切换到 项目 API 密钥 选项卡。
    4. 点击 生成项目 API 密钥

      要生成项目 API 密钥,您必须以具有 写入者角色 中描述的权限的用户身份登录。

      Project API Keys tab in Synthetics settings

      要使用 API 密钥推送到 Elastic 的全球托管测试基础设施,在生成 API 密钥时,必须打开“Elastic 托管位置已启用”切换按钮。如果“Elastic 托管位置已启用”切换按钮处于禁用状态,则管理员已限制对 Elastic 的全球托管测试基础设施的访问。在 写入者角色文档 中了解更多信息。

  2. 在您的终端中设置 SYNTHETICS_API_KEY 环境变量。您很可能希望永久设置它。这在 PowershellBash 中的设置方式不同。

如果您正在推送到 私有位置,则必须使用在 8.4 或更高版本中生成的 API 密钥。

然后,查看项目内部的关键文件和目录

  • journeys 是您添加定义浏览器监视器的 .ts.js 文件的地方。创建新项目时,此目录将包含定义示例监视器的文件。
  • lightweight 是您添加定义轻量级监视器的 .yaml 文件的地方。创建新项目时,此目录将包含一个定义示例监视器的文件。
  • synthetics.config.ts 包含项目的设置。创建新项目时,它将包含一些基本的配置选项,您可以在以后自定义这些选项。

    示例项目中的 synthetics.config.ts 使用 Elastic 的全球托管测试基础设施上的位置。管理员可以限制对 Elastic 的全球托管测试基础设施的访问。当您尝试 推送示例监视器 时,如果您看到一条错误消息,指出您无权使用 Elastic 托管的全局位置,请参阅 故障排除指南 以获取指导。

  • package.json 包含项目的 NPM 设置。在 NPM 文档 中了解更多信息。
  • .github 包含与 GitHub Actions 一起使用的示例工作流文件。
检查示例监视器
编辑

lightweight 目录中,您将找到轻量级监视器的示例。这是一个定义轻量级监视器的 YAML 文件示例

# lightweight.yml
heartbeat.monitors:
- type: http
  name: Todos Lightweight
  id: todos-lightweight
  urls: "https://elastic.github.io/synthetics-demo/"
  schedule: '@every 1m'

有关轻量级监视器配置选项的更多详细信息,请参阅 配置轻量级监视器

journeys 目录中,您将找到浏览器监视器的示例。这是一个定义浏览器监视器的 TypeScript 文件示例

// example.journey.ts
import { journey, step, monitor, expect } from '@elastic/synthetics';
journey('My Example Journey', ({ page, params }) => {
  // Only relevant for the push command to create
  // monitors in Kibana
  monitor.use({
    id: 'example-monitor',
    schedule: 10,
  });
  step('launch application', async () => {
    await page.goto(params.url);
  });
  step('assert title', async () => {
    const header = await page.locator('h1');
    expect(await header.textContent()).toBe('todos');
  });
});

有关编写旅程和配置浏览器监视器的更多详细信息,请参阅 脚本化浏览器监视器

测试并连接到 Elastic Stack
编辑

在项目目录中,您可以使用 npx @elastic/synthetics 命令执行两件事

  • 在本地测试基于浏览器的监视器。要运行 .ts.js 文件中定义的所有旅程

    npx @elastic/synthetics journeys
  • 将所有监视器配置推送到 Elastic 部署。从您的项目内部运行以下命令

    npx @elastic/synthetics push --auth $SYNTHETICS_API_KEY --url <kibana-url>

每个旅程或轻量级监视器将在 Synthetics 应用中显示一个监视器,您将从本地环境管理所有监视器。有关使用 push 命令的更多详细信息,请参阅 @elastic/synthetics push

如果您已 添加了私有位置,则可以 push 到该私有位置。

要列出可用的私有位置,请使用要从中获取可用位置的部署的 Kibana URL 运行 elastic-synthetics locations 命令

在 Kibana 中查看
编辑

创建或更新监视器后,第一次运行可能不会立即发生,但第一次运行所需的时间将小于监视器配置的频率。例如,如果您创建了一个监视器并将其配置为每 10 分钟运行一次,则第一次运行将在创建后 10 分钟内发生。第一次运行后,监视器将根据配置的频率开始定期运行。如果您想更快地查看结果,可以运行手动测试。

然后,转到 Kibana 中的 Synthetics 应用。您应该会看到您新推送的监视器正在运行。您还可以转到 管理 选项卡以查看监视器的配置设置。

后续步骤
编辑

了解有关