You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6+如何从环境变量读取Elastic APM配置

.NET 6 容器化WebAPI用环境变量配置Elastic APM的方法

.NET的配置系统原生支持通过环境变量覆盖配置文件内容,针对Elastic APM的配置,只需按照规则将appsettings.json里的层级配置转换成特定格式的环境变量即可,无需修改现有Program.cs中的app.UseAllElasticApm(app.Configuration)代码——环境变量优先级高于配置文件,会自动覆盖对应项。

配置项转换规则

把ElasticApm节点下的层级配置,用**双下划线__**分隔层级,同时将所有字母转为大写,对应关系如下:

appsettings.json 配置项对应环境变量
ElasticApm:ServerUrlsELASTICAPM__SERVERURLS
ElasticApm:CaptureBodyELASTICAPM__CAPTUREBODY
ElasticApm:CaptureBodyContentTypesELASTICAPM__CAPTUREBODYCONTENTTYPES
ElasticApm:CloudProviderELASTICAPM__CLOUDPROVIDER
ElasticApm:ServiceNameELASTICAPM__SERVICENAME

另外,日志级别也可以用环境变量设置:

  • Logging:LogLevel:Elastic.Apm 对应 LOGGING__LOGLEVEL__ELASTIC.APM

容器中设置环境变量的几种方式

1. Docker Run 命令直接传递

启动容器时用-e参数逐个指定环境变量:

docker run -d \
  -p 8080:80 \
  -e ELASTICAPM__SERVERURLS="http://your-apm-server:8200" \
  -e ELASTICAPM__SERVICENAME="MyApp-Container" \
  -e ELASTICAPM__CAPTUREBODY="all" \
  your-api-image:latest

2. Dockerfile 中预定义环境变量

在Dockerfile里用ENV指令配置:

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80

# 配置Elastic APM环境变量
ENV ELASTICAPM__SERVERURLS=http://your-apm-server:8200
ENV ELASTICAPM__SERVICENAME=MyApp-Container
ENV ELASTICAPM__CAPTUREBODY=all

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
# ... 其他构建步骤 ...

3. Docker Compose 配置文件

在docker-compose.yml的environment字段下添加:

version: "3.8"
services:
  my-api:
    image: your-api-image:latest
    ports:
      - "8080:80"
    environment:
      - ELASTICAPM__SERVERURLS=http://your-apm-server:8200
      - ELASTICAPM__SERVICENAME=MyApp-Container
      - ELASTICAPM__CAPTUREBODY=all
      - ELASTICAPM__CAPTUREBODYCONTENTTYPES=application/x-www-form-urlencoded*, text/*, application/json*, application/xml*

验证配置生效

启动容器后,可以通过API的日志或者Elastic APM服务器的监控面板,确认服务是否成功连接到APM服务器,配置是否生效。

内容的提问来源于stack exchange,提问作者Thiemo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 15:43:31