Fleet 管理的 APM Server

编辑

本指南将解释如何设置和配置 Fleet 管理的 APM Server。

先决条件
编辑

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

  • 具有基本许可证或更高版本的 Elasticsearch 集群和 Kibana(版本 8.17)。 了解如何在您自己的硬件上安装 Elastic Stack
  • Kibana 和 Elasticsearch 之间的安全加密连接。有关更多信息,请参阅 启用安全性的情况下启动 Elastic Stack
  • Kibana 从 Elastic Package Registry 下载集成包所需的 Internet 连接。请确保 Kibana 服务器可以连接到端口 443 上的 https://epr.elastic.co。如果您的环境有网络流量限制,则有多种方法可以解决此要求。有关更多信息,请参阅 气隙环境
  • Kibana 用户在 Fleet 和 Integrations 上具有 All 权限。由于许多 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"

密码应存储在 Kibana 密钥库中,如 Elasticsearch 安全文档中所述。

步骤 1:设置 Fleet
编辑

使用 Kibana 中的 Fleet 将 APM 数据引入 Elastic Stack。首次使用 Fleet 时,您需要设置它并添加 Fleet Server

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

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

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

    如果 编辑主机 选项灰显,则 Fleet Server 主机在 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 Server 策略和注册令牌,请选择 快速启动。Fleet Server 策略将包括 Fleet Server 集成以及用于监视 Elastic Agent 的系统集成。此选项会生成自签名证书,不建议用于生产用例。
  • 如果您希望

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

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

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

如果您无法添加 Fleet 管理的代理,请单击 代理 选项卡,并确认运行 Fleet Server 的代理运行状况良好。

有关更多信息,请参阅 Fleet Server

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

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

    Fleet showing APM integration overview
  4. 添加 Elastic APM 集成 页面上,定义 APM Server 将侦听的主机和端口。记下此值,您稍后会用到它。

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

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

    Fleet showing apm policy

    分配给此策略的任何 Elastic Agent 都将从您检测的应用程序收集 APM 数据。

步骤 3:安装 APM 代理
编辑

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

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

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

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

1. 下载 APM 代理

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

  • 从 Maven Central 下载最新代理之前的版本
  • 使用 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