APM Server 二进制文件

编辑

本指南将解释如何设置和配置 APM Server 二进制文件。

先决条件
编辑

首先,请参阅 Elastic 支持矩阵,了解有关支持的操作系统和产品兼容性的信息。

您需要:

  • Elasticsearch 用于存储和索引数据。
  • Kibana 用于通过 Applications UI 进行可视化。

我们建议您使用相同版本的 Elasticsearch、Kibana 和 APM Server。有关安装这些产品的更多信息,请参阅 安装 Elastic Stack

Install Elastic APM yourself
步骤 1:安装
编辑

开始之前:如果您尚未安装 Elastic Stack,请立即安装。请参阅 了解如何在您自己的硬件上安装 Elastic Stack

要下载和安装 APM Server,请使用以下适用于您系统的命令。如果您使用 aptyum,您可以从我们的存储库安装 APM Server,以便更轻松地更新到最新版本。

有关其他安装选项(例如 32 位映像),请参阅我们的 下载页面

deb:

curl -L -O https://artifacts.elastic.co/downloads/apm-server/apm-server-8.17.0-amd64.deb
sudo dpkg -i apm-server-8.17.0-amd64.deb

RPM:

curl -L -O https://artifacts.elastic.co/downloads/apm-server/apm-server-8.17.0-x86_64.rpm
sudo rpm -vi apm-server-8.17.0-x86_64.rpm

其他 Linux:

curl -L -O https://artifacts.elastic.co/downloads/apm-server/apm-server-8.17.0-linux-x86_64.tar.gz
tar xzvf apm-server-8.17.0-linux-x86_64.tar.gz

Mac:

curl -L -O https://artifacts.elastic.co/downloads/apm-server/apm-server-8.17.0-darwin-x86_64.tar.gz
tar xzvf apm-server-8.17.0-darwin-x86_64.tar.gz

Windows:

  1. 下载页面下载 APM Server Windows zip 文件。
  2. 将 zip 文件的内容解压缩到 C:\Program Files 中。
  3. apm-server-<version>-windows 目录重命名为 APM-Server
  4. 以管理员身份打开 PowerShell 提示符(右键单击 PowerShell 图标,然后选择 以管理员身份运行)。如果您运行的是 Windows XP,则可能需要下载并安装 PowerShell。
  5. 在 PowerShell 提示符下,运行以下命令以将 APM Server 安装为 Windows 服务

    PS > cd 'C:\Program Files\APM-Server'
    PS C:\Program Files\APM-Server> .\install-service.ps1

如果您的系统上禁用了脚本执行,则需要设置当前会话的执行策略,以允许脚本运行。例如:PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service.ps1

Docker:

有关部署 Docker 容器的信息,请参阅 在 Docker 上运行

步骤 2:设置和配置
编辑

通过编辑 apm-server.yml 配置文件来配置 APM。此文件的位置因平台而异 — 请参阅安装布局以获取有关查找此文件的帮助。

一个最小的配置文件可能如下所示:

apm-server:
  host: "localhost:8200" 
output.elasticsearch:
  hosts: ["localhost:9200"] 
  username: "elastic" 
  password: "changeme"

APM Server 监听的 host:port

要连接到的 Elasticsearch host:port

此示例使用基本身份验证。此处提供的用户需要具有将事件发布到 Elasticsearch 所需的权限。要为此角色创建专用用户,请参阅 创建写入角色

所有可用的配置选项都在配置 APM Server中进行了概述。

步骤 3:启动
编辑

在生产环境中,您会将 APM Server 放在其自己的计算机上,类似于您运行 Elasticsearch 的方式。您可以在与 Elasticsearch 相同的计算机上运行它,但不建议这样做,因为这些进程将争夺资源。

要启动 APM Server,请运行:

./apm-server -e

-e 全局标志启用日志记录到 stderr 并禁用 syslog/文件输出。如果您已在配置文件中启用了日志记录,请删除此标志。对于 Linux 系统,请参阅 APM Server 状态和日志

您应该看到 APM Server 启动。它将尝试在 localhost 端口 9200 上连接到 Elasticsearch,并在端口 8200 上向代理公开 API。您可以在 apm-server.yml 中更改默认值,或者在命令行中提供不同的地址:

./apm-server -e -E output.elasticsearch.hosts=ElasticsearchAddress:9200 -E apm-server.host=localhost:8200
Debian 包/RPM编辑

对于 Debian 包和 RPM 安装,我们建议 apm-server 进程以非 root 用户身份运行。因此,这些安装方法会创建一个 apm-server 用户,您可以使用该用户启动进程。此外,只有在配置文件归运行该进程的用户所有时,APM Server 才会启动。

在这种情况下,要启动 APM Server,请运行:

sudo -u apm-server apm-server [<argument...>]

默认情况下,APM Server 从 /etc/apm-server/apm-server.yml 加载其配置文件。有关完整的目录布局,请参阅deb 和 rpm 默认路径

步骤 4:安装 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 代理文档
步骤 5:查看您的数据
编辑

一旦您至少有一个 APM 代理将数据发送到 APM 服务器,您就可以开始在 Kibana 应用程序 UI 中可视化您的数据。

Applications UI with data
APT 和 YUM 的存储库
编辑

我们为基于 APT 和 YUM 的发行版提供了存储库。请注意,我们提供二进制包,但不提供源包。

我们使用 PGP 密钥 D88E42B4,Elasticsearch 签名密钥,指纹为

4609 5ACC 8548 582C 1A26 99A9 D27D 666C D88E 42B4

来签署我们所有的软件包。它可从 https://pgp.mit.edu 获取。

添加 APT 的 apm-server 存储库

  1. 下载并安装公共签名密钥

    wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
  2. 您可能需要在继续之前在 Debian 上安装 apt-transport-https

    sudo apt-get install apt-transport-https
  3. 将存储库定义保存到 /etc/apt/sources.list.d/elastic-8.x.list

    echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list

    要添加 Elastic 存储库,请确保使用示例中显示的 echo 方法。不要使用 add-apt-repository,因为它会添加一个 deb-src 条目,但我们不提供源包。

    如果您错误地添加了 deb-src 条目,您将看到类似以下内容的错误

    Unable to find expected entry 'main/source/Sources' in Release file (Wrong sources.list entry or malformed file)

    只需从 /etc/apt/sources.list 文件中删除 deb-src 条目,安装应该会按预期工作。

  4. 运行 apt-get update,存储库即可使用。例如,您可以通过运行以下命令来安装 APM 服务器

    sudo apt-get update && sudo apt-get install apm-server
  5. 要配置 APM 服务器在启动期间自动启动,请运行

    sudo systemctl enable apm-server

添加 YUM 的 apm-server 存储库

  1. 下载并安装公共签名密钥

    sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
  2. /etc/yum.repos.d/ 目录中创建一个带有 .repo 扩展名的文件(例如,elastic.repo),并添加以下行

    [elastic-8.x]
    name=Elastic repository for 8.x packages
    baseurl=https://artifacts.elastic.co/packages/8.x/yum
    gpgcheck=1
    gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
    enabled=1
    autorefresh=1
    type=rpm-md

    您的存储库已准备好使用。例如,您可以通过运行以下命令来安装 APM 服务器

    sudo yum install apm-server
  3. 要配置 APM 服务器在启动期间自动启动,请运行

    sudo systemctl enable apm-server
在 Docker 上运行 APM 服务器
编辑

APM 服务器的 Docker 镜像可从 Elastic Docker 注册表获得。基础镜像是 ubuntu:22.04

所有已发布的 Docker 镜像和标签的列表可在 www.docker.elastic.co 上找到。

这些镜像在 Elastic 许可下可免费使用。它们包含开源和免费的商业功能以及对付费商业功能的访问。开始 30 天试用来试用所有付费商业功能。有关 Elastic 许可级别的更多信息,请参阅订阅页面。

拉取镜像编辑

从 Elastic Docker 注册表中发出 docker pull 命令,然后选择性地验证镜像,即可轻松获取 APM 服务器的 Docker 镜像。

  1. 拉取 Docker 镜像

    docker pull docker.elastic.co/apm/apm-server:8.17.0
  2. 验证 Docker 镜像

    wget https://artifacts.elastic.co/cosign.pub
    cosign verify --key cosign.pub docker.elastic.co/apm/apm-server:8.17.0

    cosign 命令以 JSON 格式打印检查结果和签名负载

    Verification for docker.elastic.co/apm/apm-server:8.17.0 --
    The following checks were performed on each of these signatures:
      - The cosign claims were validated
      - Existence of the claims in the transparency log was verified offline
      - The signatures were verified against the specified public key
在 Docker 上配置 APM 服务器编辑

Docker 镜像提供了几种配置 APM 服务器的方法。传统方法是通过卷挂载提供配置文件,但也可以创建包含您的配置的自定义镜像。

示例配置文件编辑

下载此示例配置文件作为起点

curl -L -O https://raw.githubusercontent.com/elastic/apm-server/8.17/apm-server.docker.yml
卷挂载配置编辑

在 Docker 上配置 APM 服务器的一种方法是通过卷挂载提供 apm-server.docker.yml。使用 docker run,可以像这样指定卷挂载。

docker run -d \
  -p 8200:8200 \
  --name=apm-server \
  --user=apm-server \
  --volume="$(pwd)/apm-server.docker.yml:/usr/share/apm-server/apm-server.yml:ro" \
  docker.elastic.co/apm/apm-server:8.17.0 \
  --strict.perms=false -e \
  -E output.elasticsearch.hosts=["elasticsearch:9200"]  

替换您的 Elasticsearch 主机和端口。

如果您在 Elastic Cloud 中使用托管的 Elasticsearch 服务,请使用前面显示的语法,将 -E output.elasticsearch.hosts 行替换为 Cloud ID 和 elastic 密码。

自定义您的配置编辑

之前下载的 apm-server.docker.yml 应该针对您的环境进行自定义。有关更多详细信息,请参阅配置 APM 服务器。编辑配置文件并自定义它以匹配您的环境,然后重新部署您的 APM 服务器容器。

自定义镜像配置编辑

可以将 APM 服务器配置嵌入自定义镜像中。这是一个实现此目的的 Dockerfile 示例

FROM docker.elastic.co/apm/apm-server:8.17.0
COPY --chmod=0644 --chown=1000:1000 apm-server.yml /usr/share/apm-server/apm-server.yml