使用项目监控创建监控

编辑

使用项目监控创建监控编辑

项目是在 Elastic Stack 中配置合成监控的最强大和最复杂的方式。项目允许您将基础设施定义为代码,更常见的是称为 IaaC 或 Git-ops。使用项目监控,您可以将 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. 转到 Kibana 中的 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 的全球托管测试基础设施的访问。当您尝试 push 示例监控器 时,如果您看到一条错误消息,指出您没有权限使用 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 到该私有位置。

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

在 Kibana 中查看编辑

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

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

下一步编辑

了解有关以下内容的更多信息