配置
编辑配置
编辑有几种方法可以配置 Elastic APM 的行为。我们建议使用 config/elastic_apm.yml
文件
server_url: 'https://127.0.0.1:8200' secret_token: <%= ENV["VERY_SECRET_TOKEN"] %>
某些选项可以使用 ENV
变量设置。当使用此方法时,字符串用逗号分隔,例如, ELASTIC_APM_SANITIZE_FIELD_NAMES="a,b" # => [/a/, /b/]
。
配置优先级
编辑选项按以下顺序应用(最后一个生效)
- 默认值
ElasticAPM.start
/Config.new
的参数- 配置文件,例如,
config/elastic_apm.yml
- 环境变量
- 中央配置(支持的选项标有 )
动态配置
编辑当从支持的源设置时,标有 徽章的配置选项可以在运行时更改。
Agent 支持 中央配置,允许您通过 APM 应用程序微调某些配置。默认情况下,此功能在 Agent 中启用,使用 central_config
。
Ruby on Rails
编辑当使用 Rails 时,可以在 config/application.rb
中指定选项
# config/application.rb config.elastic_apm.service_name = 'MyApp'
Sinatra 和 Rack
编辑当使用 Sinatra 和 Rack 时,您可以在启动代理时进行配置
# config.ru or similar ElasticAPM.start( app: MyApp, service_name: 'SomeOtherName' )
或者,使用 ElasticAPM::Sinatra.start
API
# config.ru or similar ElasticAPM::Sinatra.start( MyApp, service_name: 'SomeOtherName' )
请参阅 Rack 入门。
Grape 和 Rack
编辑当使用 Grape 和 Rack(不使用 Rails)时,请在启动代理时进行配置
# config.ru or similar ElasticAPM::Grape.start( MyApp, service_name: 'SomeOtherName' )
请参阅 Rack 入门。
选项
编辑config_file
编辑环境 | Config 键 |
默认值 |
---|---|---|
|
|
|
配置 YAML 文件的路径。如果文件存在,Elastic APM 将从中加载配置选项。该文件将被评估为 ERB,因此您可以像在 database.yml
中一样包含 ENV
变量,例如
secret_token: <%= ENV['VERY_SECRET_TOKEN'] %>
server_url
编辑环境 | Config 键 |
默认值 |
---|---|---|
|
|
|
您的 APM 服务器的 URL。该 URL 必须是完全限定的,包括协议(http
或 https
)和端口。
secret_token
编辑环境 | Config 键 |
默认值 | 示例 |
---|---|---|---|
|
|
|
一个随机字符串 |
此字符串用于确保只有您的代理可以将数据发送到您的 APM 服务器。代理和 APM 服务器都必须配置相同的密钥令牌。这是一个生成安全密钥令牌的示例
ruby -r securerandom -e 'print SecureRandom.uuid'
仅当您的 APM 服务器使用 TLS 时,密钥令牌才能提供任何真正的安全性。
api_key
编辑环境 | Config 键 |
默认值 | 示例 |
---|---|---|---|
|
|
|
一个 base64 编码的字符串 |
此 base64 编码的字符串用于确保只有您的代理可以将数据发送到您的 APM 服务器。必须使用 APM 服务器命令行工具 创建 API 密钥。
仅当您的 APM 服务器使用 TLS 时,API 密钥才能提供任何真正的安全性。
api_buffer_size
编辑环境 |
|
默认值 |
|
|
|
在发送到 APM 服务器之前,队列中保留的最大对象数量。
如果您达到限制,请考虑增加代理的 工作池大小。如果不增加,代理可能无法连接到 APM 服务器。日志应该会告诉您哪里出了问题。
api_request_size
编辑环境 |
|
默认值 |
|
|
|
通过一个请求发送到 APM 服务器的最大字节数。当达到此限制时,代理将打开一个新请求。
必须以 大小格式 提供此值。
api_request_time
编辑环境 |
|
默认值 |
|
|
|
在打开新请求之前,到 APM 服务器的单个流式请求的最大持续时间。
APM 服务器在关闭请求之前有自己的 30 秒限制。必须以 持续时间格式 提供此值。
breakdown-metrics
编辑环境 |
|
默认值 |
|
|
|
启用或禁用分解指标的跟踪和收集。将其设置为 False
将禁用分解指标的跟踪,这可以减少代理的开销。
此功能需要 APM Server 和 Kibana >= 7.3。
capture_body
编辑环境 |
|
默认值 |
示例 |
|
|
|
|
Ruby 代理可以选择捕获 HTTP 请求事务的请求正文(例如 POST
变量或 JSON 数据)。
可能的值:"errors"
、"transactions"
、"all"
、"off"
。
如果请求有正文并且此设置已禁用,则正文将显示为 [SKIPPED]
。
请求正文通常包含敏感值,如密码和信用卡号。我们尝试从表单正文中删除敏感数据,但不处理 JSON 等文本正文。如果您的服务处理此类数据,我们建议谨慎启用此功能。
capture_headers
编辑环境 |
|
默认值 |
|
|
|
这表示是否将请求标头附加到事务和错误。
capture_elasticsearch_queries
编辑环境 |
|
默认值 |
|
|
|
这表示是否捕获 Elasticsearch 中请求的正文。
capture_env
编辑环境 |
|
默认值 |
|
|
|
这表示是否将 Rack 中的 ENV
附加到事务和错误。
central_config
编辑环境 |
|
默认值 |
|
|
|
这将通过 Kibana 启用 APM Agent 配置。如果设置为 true
,客户端将定期轮询 APM 服务器以获取新的代理配置。
通常,APM 服务器决定轮询的频率,但如果没有,则默认间隔设置为 5 分钟。
此功能需要 APM Server v7.3 或更高版本,并且 APM Server 配置为 kibana.enabled: true
。
cloud_provider
编辑环境 |
|
默认值 |
|
|
|
指定用于元数据收集的云提供商。默认值为 "auto"
,这意味着代理使用试错法从所有支持的云提供商收集元数据。
有效选项为 "auto"
、"aws"
、"gcp"
、"azure"
和 "none"
。如果设置为 "none"
,则不会收集任何云元数据。如果设置为 "aws"
、"gcp"
或 "azure"
中的任何一个,则只会从选定的提供商执行收集元数据的尝试。
disable_metrics
编辑环境 |
|
默认值 |
示例 |
|
|
[] |
|
一个逗号分隔的点式指标名称列表,不应发送到 APM 服务器。您可以使用 *
来匹配多个指标。匹配不区分大小写。
disable_send
编辑环境 |
|
默认值 |
|
|
|
这将禁用向 APM 服务器发送有效负载。
disable_start_message
编辑环境 |
|
默认值 |
|
|
|
这将禁用代理的启动消息,该消息会宣布自身。
disable_instrumentations
编辑环境 | Config 键 |
默认值 |
---|---|---|
|
|
|
Elastic APM 会自动检测选择的第三方库。使用此选项可以禁用其中任何一个。
使用 ElasticAPM.agent.config.enabled_instrumentations
获取已启用检测的数组。
enabled
编辑环境 | Config 键 |
默认值 |
---|---|---|
|
|
|
表示是否启动代理。如果 enabled
为 false
,则 ElasticAPM.start
将不执行任何操作,并且对根 API 的所有调用都将返回 nil
。
environment
编辑环境 | Config 键 |
默认值 | 示例 |
---|---|---|---|
|
|
来自 |
|
此服务部署所在环境的名称,例如 “production” 或 “staging”。
环境允许您在 APM 应用程序中轻松地全局筛选数据。在跨代理命名环境时保持一致。有关更多信息,请参阅 APM 应用程序中的 环境选择器。
默认为 ENV['RAILS_ENV'] || ENV['RACK_ENV']
。
此功能在 Kibana 版本 >= 7.2 的 APM 应用程序中得到完全支持。您必须使用查询栏来筛选 7.2 之前版本中的特定环境。
filter_exception_types
编辑环境 |
|
默认值 |
示例 |
不适用 |
|
|
|
使用此选项可以筛选特定错误常量的错误跟踪。
framework_name
编辑环境 | Config 键 |
默认值 |
---|---|---|
|
|
取决于框架 |
所用框架的名称。对于 Rails 或 Sinatra,此项分别默认为 Ruby on Rails
和 Sinatra
,否则默认为 nil
。
framework_version
编辑环境 | Config 键 |
默认值 |
---|---|---|
|
|
取决于框架 |
所用框架的版本号。对于 Ruby on Rails 和 Sinatra,此项默认为所用框架的版本,否则默认为 nil
。
global_labels
编辑环境 | Config 键 |
默认值 | 示例 |
---|---|---|---|
|
|
|
|
添加到所有事件的标签,格式为 key=value[,key=value[,…]]。
此选项需要 APM Server 7.2 或更高版本,并且在使用旧版本服务器时无效。
hostname
编辑环境 | Config 键 |
默认值 | 示例 |
---|---|---|---|
|
|
|
|
将错误和事务数据发送到 APM 服务器时使用的主机名。
ignore_url_patterns
编辑环境 | Config 键 |
默认值 | 示例 |
---|---|---|---|
|
|
|
|
使用此选项可以忽略某些 URL 模式,例如运行状况检查或管理部分。
此处的忽略指的是不要将其包装在 事务 中。错误仍会报告。
通过 ENV
设置此选项时,请使用逗号分隔的字符串。例如, ELASTIC_APM_IGNORE_URL_PATTERNS="a,b" # => [/a/, /b/]
instrument
编辑环境 | Config 键 |
默认值 | 示例 |
---|---|---|---|
|
|
|
|
使用此选项可以忽略某些 URL 模式,例如运行状况检查或管理部分。
instrumented_rake_tasks
编辑环境 | Config 键 |
默认值 | 示例 |
---|---|---|---|
|
|
|
|
Elastic APM 可以检测您的 Rake 任务。这是一个选择加入字段,因为它们用于多种用途。
log_ecs_reformatting
编辑环境 | Config 键 |
默认值 |
---|---|---|
|
|
|
这是一个实验性选项,它配置代理以使用来自 ecs-logging
gem 的记录器。两个有效选项是 off
和 override
。
将此选项设置为 override
会将代理记录器设置为 EcsLogging::Logger
实例,并且所有记录的输出都将采用 ECS 兼容的 JSON 格式。
必须在启动代理之前安装 ecs-logging
gem。如果 log_ecs_reformatting
设置为 override
,代理将尝试要求该 gem,如果无法加载,则会回退到使用标准的 Ruby ::Logger
并记录加载错误。
请注意,如果您使用的是 Rails,则代理将忽略此选项并使用 Rails 记录器。如果您在使用 Rails 时想使用 EcsLogging::Logger
,请将代理的记录器配置选项显式设置为 EcsLogging::Logger
实例。
log_level
编辑环境 | Config 键 |
默认值 |
---|---|---|
|
|
|
默认情况下,Elastic APM 记录到 stdout
或在与 Rails 一起使用时使用 Rails.log
。
log_path
编辑环境 | Config 键 |
默认值 | 示例 |
---|---|---|---|
|
|
|
|
日志文件的路径。
默认情况下,Elastic APM 记录到 stdout
或在与 Rails 一起使用时使用 Rails.log
。
如果指定了 log_path
,它将覆盖 Rails.log
以指向该路径。
这应支持绝对路径和相对路径。请确保目录存在。
logger
编辑环境 | Config 键 |
默认值 | 示例 |
---|---|---|---|
不适用 |
|
取决于 |
|
默认情况下,Elastic APM 记录到 stdout
或在与 Rails 一起使用时使用 Rails.log
。
使用此项可以提供其他记录器。此项应具有与 Ruby 内置 Logger
相同的 API。
metrics_interval
编辑环境 | Config 键 |
默认值 |
---|---|---|
|
|
|
指定向 APM 服务器报告指标的时间间隔。该时间间隔应以秒为单位,或包含时间后缀。
要禁用指标报告,请将时间间隔设置为 0
。
pool_size
编辑环境 | Config 键 |
默认值 | 示例 |
---|---|---|---|
|
|
|
|
Elastic APM 使用线程池将其数据发送到 APM 服务器。
这可以确保代理不会比必要的更多地阻塞主线程。
如果您有高负载并且收到有关缓冲区已满的警告,则增加工作池大小可能会有所帮助。
proxy_address
编辑环境 | Config 键 |
默认值 | 示例 |
---|---|---|---|
|
|
|
|
用作 HTTP 客户端代理的地址。
可用选项有
-
proxy_address
-
proxy_headers
-
proxy_password
-
proxy_port
-
proxy_username
还有 ENV
版本的这些内容,遵循在前面加上 ELASTIC_APM_
的相同模式。
请参阅 Http.rb 的文档。
recording
编辑环境 | Config 键 |
默认值 |
---|---|---|
|
|
|
启用或禁用事件记录。如果设置为 false
,则代理不会创建或向 Elastic APM 服务器发送任何事件,并且仪器开销将降至最低。当此选项为 false 时,代理会继续轮询服务器以进行配置更改。
sanitize_field_names
编辑环境 | Config 键 |
默认值 | 示例 |
---|---|---|---|
|
|
|
|
有时,需要清理发送到 Elastic APM 的数据以删除敏感值。
配置应清理的字段名称的通配符模式列表。这些模式适用于 HTTP 标头和正文(如果它们正在被捕获)。
支持通配符 *
,它匹配零个或多个字符。示例:/foo/*/bar/*/baz*
、*foo*
。匹配不区分大小写。
service_name
编辑环境 | Config 键 |
默认值 | 示例 |
---|---|---|---|
|
|
应用名称 |
|
您的服务名称。这用于对服务的错误和事务进行分组,并且是 Elastic APM 用户界面中的主要过滤器。
如果您使用的是 Ruby on Rails,则此项默认为您的应用名称。如果您使用的是 Sinatra,则此项默认为您的应用类的名称。
服务名称必须符合此正则表达式: ^[a-zA-Z0-9 _-]+$
。换句话说,它只能包含 ASCII 字母、数字、破折号、下划线和空格中的字符。
service_node_name
编辑[options="header"]
环境 |
|
默认值 |
示例 |
|
|
|
|
给定服务节点的名称。这是可选的,如果省略,则 APM Server 将回退到 system.container.id
(如果可用),并在必要时回退到 host.name
。
此选项允许您手动设置节点名称,以确保其唯一且有意义。
service_version
编辑环境 | Config 键 |
默认值 | 示例 |
---|---|---|---|
|
|
|
一个字符串,指示已部署服务的版本 |
已部署的服务的版本。此项默认为 git rev-parse --verify HEAD
。
source_lines_error_app_frames
编辑source_lines_error_library_frames
编辑source_lines_span_app_frames
编辑source_lines_span_library_frames
编辑环境 |
|
默认值 |
|
|
|
|
|
|
|
|
|
|
|
|
默认情况下,APM 代理会收集错误的源代码片段。使用以上设置可修改收集的源代码行数。
我们区分错误和跨度,以及库框架和应用框架。
尤其是对于跨度,收集源代码会对 Elasticsearch 集群中的存储使用产生巨大影响。
span_frames_min_duration
编辑环境 |
|
默认值 |
|
|
|
使用此项可禁用持续时间短于或等于给定毫秒数的跨度的堆栈跟踪框架收集。
默认值为 "5ms"
。
将其设置为 -1
可收集所有跨度的堆栈跟踪。将其设置为 0
可禁用所有跨度的堆栈跟踪收集。
它必须以 持续时间格式 提供。
server_ca_cert_file
编辑环境 | Config 键 |
默认值 | 示例 |
---|---|---|---|
|
|
|
|
用于连接到 APM 服务器的自定义 CA 证书的路径。
stack_trace_limit
编辑环境 | Config 键 |
默认值 |
---|---|---|
|
|
|
每个跨度/错误的堆栈跟踪行的最大数量。
transaction_max_spans
编辑环境 |
|
默认值 |
|
|
|
限制每个事务记录的跨度数量。这在事务创建大量跨度(例如,数千个 SQL 查询)的情况下很有帮助。设置上限将防止代理和 APM 服务器因针对此类极端情况的过多工作而过载。
transaction_sample_rate
编辑环境 |
|
默认值 |
|
|
|
默认情况下,代理会对每个事务(例如,对您服务的请求)进行采样。为了减少开销和存储需求,您可以将采样率设置为 0.0
到 1.0
之间的值。我们仍然会记录未采样事务的总体时间和结果,但不记录上下文信息、标记或跨度。采样率将四舍五入为 4 位精度。
verify_server_cert
编辑环境 |
|
默认值 |
|
|
|
默认情况下,如果您使用 HTTPS 连接到 APM 服务器,则代理会验证 SSL 证书。可以通过将此设置更改为 false
来禁用验证。
配置格式
编辑某些选项需要单位,即持续时间或大小。这些需要以特定格式提供。
持续时间格式
编辑持续时间格式用于超时等选项。单位以后缀形式直接提供在数字之后,且不通过任何空格分隔。
示例: "5ms"
支持的单位
-
ms
(毫秒) -
s
(秒) -
m
(分钟)
大小格式
编辑大小格式用于最大缓冲区大小等选项。单位以后缀形式直接提供在数字之后,且不通过任何空格分隔。
示例: 10kb
支持的单位:
-
b
(字节) -
kb
(千字节) -
mb
(兆字节) -
gb
(吉字节)
我们使用 2 的幂次方大小约定,例如 1 千字节 == 1024 字节
。
特殊配置
编辑Elastic APM 会对 Kernel#require
进行修补,以自动检测和检测支持的第三方库。 它非常谨慎地执行此操作,但在极少数情况下,它可能会与某些库冲突。
要绕过此修补,请将环境变量 ELASTIC_APM_SKIP_REQUIRE_PATCH
设置为 "1"
。
代理可能需要一些额外的调整,以确保第三方库被拾取并进行检测。请确保在要求其他依赖项之后再要求代理。