由 Fleet 管理的 APM 服务器

编辑

本指南将说明如何设置和配置由 Fleet 管理的 APM 服务器。

先决条件
编辑

您需要 Elasticsearch 用于存储和搜索您的数据,以及 Kibana 用于可视化和管理数据。设置这些组件时,您需要

  • Elasticsearch 集群和 Kibana(8.16 版或更高版本)以及基本许可证或更高版本的许可证。了解如何在您自己的硬件上安装 Elastic Stack
  • Kibana 和 Elasticsearch 之间的安全加密连接。有关更多信息,请参见 启用安全功能启动 Elastic Stack
  • Kibana 从 Elastic Package Registry 下载集成包所需的互联网连接。确保 Kibana 服务器可以连接到 https://epr.elastic.co443 端口。如果您的环境存在网络流量限制,则可以通过多种方法解决此要求。有关更多信息,请参见 隔离环境
  • 拥有 Fleet 和 Integrations 的 所有 权限的 Kibana 用户。由于许多 Integrations 资源在多个空间中共享,因此用户需要在所有空间中拥有 Kibana 权限。
  • 在 Elasticsearch 配置中,必须启用 内置 API 密钥服务。(xpack.security.authc.api_key.enabled: true
  • 在 Kibana 配置中,必须设置已保存对象的加密密钥。Fleet 需要此设置才能保存 API 密钥并在 Kibana 中对其进行加密。您可以将 xpack.encryptedSavedObjects.encryptionKey 设置为至少 32 个字符的字母数字值,或者运行 kibana-encryption-keys 命令 来生成密钥。

示例安全设置

出于测试目的,您可以使用以下设置快速入门,但在发送真实数据之前,请确保正确保护 Elastic Stack。

elasticsearch.yml 示例

xpack.security.enabled: true
xpack.security.authc.api_key.enabled: true

kibana.yml 示例

elasticsearch.username: "kibana_system" 
xpack.encryptedSavedObjects.encryptionKey: "something_at_least_32_characters"

密码应按照 Elasticsearch 安全文档 中的说明存储在 Kibana 密钥库中。

步骤 1:设置 Fleet
编辑

在 Kibana 中使用 Fleet 将 APM 数据导入 Elastic Stack。首次使用 Fleet 时,您需要设置它并添加 Fleet 服务器

要部署自托管的 Fleet 服务器,您需要安装 Elastic Agent 并将其注册到包含 Fleet 服务器集成的代理策略中。

每个主机只能安装一个 Elastic Agent,这意味着您不能在同一主机上运行 Fleet 服务器和另一个 Elastic Agent,除非您部署容器化的 Fleet 服务器。

  1. 在 Fleet 中,打开 设置 选项卡。有关这些设置的更多信息,请参见 Fleet 设置
  2. Fleet 服务器主机 下,单击 编辑主机 并指定 Elastic Agent 将用于连接到 Fleet 服务器的一个或多个主机 URL。例如,https://192.0.2.1:8220,其中 192.0.2.1 是您将在其中安装 Fleet 服务器的主机 IP。保存并应用您的设置。

    如果 编辑主机 选项呈灰色显示,则 Fleet 服务器主机是在 Fleet 外部配置的。有关更多信息,请参阅 Kibana 中的 Fleet 设置

  3. Elasticsearch 主机 字段中,指定 Elastic Agent 将发送数据的 Elasticsearch URL。例如,https://192.0.2.0:9200。如果您已启用安全功能启动 Elastic Stack,请跳过此步骤(您无法更改此设置,因为它是在 Fleet 外部管理的)。
  4. 保存并应用设置。
  5. 单击 代理 选项卡,并按照产品内的说明添加 Fleet 服务器

    In-product instructions for adding a Fleet Server

注释

  • 如果您希望 Fleet 为您生成 Fleet 服务器策略和注册令牌,请选择 快速入门。Fleet 服务器策略将包含 Fleet 服务器集成以及用于监控 Elastic Agent 的系统集成。此选项会生成自签名证书,不建议用于生产用例。
  • 如果您希望:

  • 建议您为每个 Fleet 服务器生成一个唯一的服务令牌。有关生成服务令牌的其他方法,请参见 elasticsearch-service-tokens
  • 如果您提供自己的证书

    • 运行 install 命令之前,请确保替换尖括号中的值。
    • 请注意,--url 指定的 URL 必须与用于生成 --fleet-server-cert 指定的证书的 DNS 名称匹配。
  • install 命令将 Elastic Agent 安装为托管服务,并将其注册到 Fleet 服务器策略中。有关更多 Fleet 服务器命令,请参见 Elastic Agent 命令参考

如果安装成功,您将看到 Fleet 服务器已连接的确认信息。单击 继续注册 Elastic Agent 以开始将您的代理注册到 Fleet 服务器。

如果您无法添加由 Fleet 管理的代理,请单击 代理 选项卡,并确认运行 Fleet 服务器的代理是否正常。

有关更多信息,请参阅 Fleet 服务器

步骤 2:添加和配置 APM 集成
编辑
  1. 在 Kibana 中,在主菜单中查找 集成,或使用 全局搜索字段
  2. 选择 Elastic APM

    Fleet showing APM integration
  3. 单击 添加 Elastic APM

    Fleet showing APM integration overview
  4. 添加 Elastic APM 集成 页面上,定义 APM 服务器将侦听的主机和端口。记下此值,以后您将需要它。

    使用 Docker 或 Kubernetes?将主机设置为 0.0.0.0 以绑定到所有接口。

  5. 代理授权 下,设置一个密钥令牌。这将用于授权来自 APM 代理到 APM 服务器的请求。记下此值,以后您将需要它。
  6. 单击 保存并继续。此步骤大约需要一到两分钟才能完成。完成后,您将拥有一个代理策略,其中包含为您刚刚指定的配置创建的 APM 集成策略。
  7. 要查看新策略,请单击 代理策略 1

    Fleet showing apm policy

    分配给此策略的任何 Elastic Agent 都将从您已检测的服务收集 APM 数据。

步骤 3:安装 APM 代理
编辑

APM 代理使用与您的服务相同的语言编写。要监控新服务,您必须安装代理并使用服务名称、APM 服务器主机和密钥令牌对其进行配置。

  • 服务名称:APM 集成将已检测服务的名称(在每个 APM 代理的配置中定义)映射到其数据存储在 Elasticsearch 中的索引。服务名称不区分大小写,并且必须唯一。例如,您不能拥有名为 Foo 的服务和名为 foo 的另一个服务。特殊字符将从服务名称中删除,并替换为下划线 (_)。
  • APM 服务器 URL:APM 服务器侦听事件的主机和端口。这应与设置 APM 集成时定义的主机和端口匹配。
  • 密钥令牌:APM 代理和 APM 服务器通信的身份验证方法。这应与设置 APM 集成时定义的密钥令牌匹配。

如果需要更改 APM 服务器 URL 或密钥令牌以匹配您的 APM 代理,您可以编辑 APM 集成设置。

使用 -javaagent JVM 选项手动设置和配置代理。不需要更改应用程序代码,但这需要重新启动应用程序。有关此设置方法的更多信息,请参见下文。

1. 下载 APM 代理

开始使用 Elastic APM Java 代理的第一步是检索代理 JAR 的副本。Java 代理版本发布到 Maven 中心。为了获得副本,您可以:

  • 从 Maven 中心下载 最新代理以前的版本
  • 使用 curl 下载

    curl -o 'elastic-apm-agent.jar' -L 'https://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=co.elastic.apm&a=elastic-apm-agent&v=LATEST'

2. 添加 -javaagent 标志

启动应用程序时,添加 JVM 标志 -javaagent:/path/to/elastic-apm-agent-<version>.jar

3. 配置

不同的应用程序服务器设置 -javaagent 标志和系统属性的方式不同。启动您的应用程序(例如 Spring Boot 应用程序或其他嵌入式服务器)并添加 -javaagent JVM 标志。使用 -D 前缀使用系统属性配置代理

java -javaagent:/path/to/elastic-apm-agent-<version>.jar -Delastic.apm.service_name=my-cool-service -Delastic.apm.application_packages=org.example,org.another.example -Delastic.apm.server_url=http://127.0.0.1:8200 -jar my-application.jar

请参阅 使用 -javaagent 标志进行手动设置 以了解更多信息。

替代设置方法

  • 使用 apm-agent-attach-cli.jar 自动设置
    无需更改 JVM 或应用程序服务器的配置即可自动设置代理。此方法无需更改应用程序代码或 JVM 选项,并允许附加到正在运行的 JVM。有关此设置方法的更多信息,请参阅 Java 代理文档
  • 编程 API 设置以进行自附加
    通过一行代码更改和额外的 apm-agent-attach 依赖项来设置代理。此方法无需更改 JVM 选项,代理工件嵌入到打包的应用程序二进制文件中。有关此设置方法的更多信息,请参阅 Java 代理文档
步骤 4:查看您的数据
编辑

回到 Kibana,在“可观察性”下选择 APM。您应该会看到应用程序性能监控数据流入 Elastic Stack!

Applications UI with data