加载中

环境变量 Provider

env 提供程序允许以键值对的形式访问 Elastic Agent 进程可用的环境变量。然后,你可以在 Elastic Agent 配置(对于独立代理)或 Fleet 中的代理和集成策略中引用这些值。

使用环境变量可以使特定于主机的设置和特定于部署的值脱离策略和配置文件。这在大型部署中特别有用,因为你希望复用相同的 Elastic Agent 策略,但允许每个主机或容器提供其自己的设置。

在以下情况下使用 env 提供程序:

  • 提供特定于主机或环境的值,例如代理设置、区域或服务 URL。
  • 在各个代理之间复用共享策略,同时允许每个主机、容器或服务通过环境变量定义其自己的配置。

env 提供程序默认处于启用状态,无需配置。在操作系统、服务定义或容器平台中定义环境变量,然后使用 ${env.VAR_NAME} 语法在 Elastic Agent 配置或 Fleet 策略中引用它们。

对于独立运行的 Elastic Agent,你可以直接在 elastic-agent.yml 配置文件中引用环境变量。

例如,若要将环境变量用作 Elasticsearch 主机 URL 的值:

outputs:
  default:
    type: elasticsearch
    hosts: ["${env.ELASTICSEARCH_HOST}"]
		

然后,在启动 Elastic Agent 之前设置环境变量:

ELASTICSEARCH_HOST=https://elasticsearch:9200 elastic-agent run
		

独立代理会在运行时根据代理进程的环境解析 ${env.ELASTICSEARCH_HOST}

对于由 Fleet 管理的 Elastic Agent,你可以在运行 Elastic Agent 的每个主机上定义环境变量,并使用 ${env.VAR_NAME} 语法在集成或代理策略中引用它们。

例如,你可以在 filestream 集成中使用环境变量来设置特定于主机的日志路径:

inputs:
  - type: filestream
    enabled: true
    streams:
      - paths:
          - "${env.APP_LOG_DIR}/app.log"
		

每个 Elastic Agent 在运行时都会使用 env 提供程序从主机上定义的环境变量中解析 ${env.APP_LOG_DIR}。这使得 Fleet 中的单个策略能够适应每个主机的行为,而无需创建多个策略。

注意

如果你将 Elastic Agent 作为 Linux 或 Windows 服务运行,则可以在服务清单或环境配置中定义环境变量。有关更多详细信息,请参阅 使用默认主机变量的代理服务器连接 中的示例。

对于容器化部署,支持的变量列表请参阅 Elastic Agent 环境变量

env 提供程序支持将多个变量与回退值链接在一起。当你希望按顺序尝试多个环境变量,且在未设置任何变量时使用默认值时,这非常有用。

使用回退可以帮助你创建能够在不同环境中运行的健壮策略,而无需在每个主机或容器上定义每个变量。

使用以下语法:

${env.VAR1|env.VAR2|env.VAR3|'default-value'}
		
  1. Elastic Agent 会在运行时从左到右对表达式进行求值。如果未设置任何变量,它将使用最后的字面量值(在此示例中为 'default-value')。

你可以根据需要链接任意数量的环境变量,最终的回退可以是配置字段接受的任何字面量字符串或值。

例如

logging.level: ${env.LOG_LEVEL|env.DEFAULT_LOG_LEVEL|'info'}
		

这将首先尝试 LOG_LEVEL 环境变量,然后是 DEFAULT_LOG_LEVEL,如果两个变量均未设置,则最终默认为 'info'

© . This website operates independently and is not affiliated with or endorsed by Elasticsearch B.V. All brand names, logos, and trademarks are the property of their respective owners.