仪表板配置

仪表板在启动时进行配置。 配置包括前端和 OpenTelemetry 协议(OTLP)地址、资源服务终结点、身份验证、遥测限制等。

使用 .NET.NET Aspire 应用主机项目启动仪表板时,它会自动配置为显示应用的资源和遥测数据。 在 独立模式中启动仪表板时,会提供配置。

可通过多种方式提供配置:

  • 命令行参数。
  • 环境变量。 : 分隔符应替换为环境变量名称中的双下划线(__)。
  • 可选 JSON 配置文件。 DOTNET_DASHBOARD_CONFIG_FILE_PATH 设置可用于指定 JSON 配置文件。

请考虑以下示例,该示例演示如何在从 Docker 容器启动时配置仪表板:

docker run --rm -it -p 18888:18888 -p 4317:18889 -d --name aspire-dashboard \
    -e DASHBOARD__TELEMETRYLIMITS__MAXLOGCOUNT='1000' \
    -e DASHBOARD__TELEMETRYLIMITS__MAXTRACECOUNT='1000' \
    -e DASHBOARD__TELEMETRYLIMITS__MAXMETRICSCOUNT='1000' \
    mcr.microsoft.com/dotnet/aspire-dashboard:9.0

或者,可以使用使用 DOTNET_DASHBOARD_CONFIG_FILE_PATH指定的 JSON 配置文件来配置这些相同的值:

{
  "Dashboard": {
    "TelemetryLimits": {
      "MaxLogCount": 1000,
      "MaxTraceCount": 1000,
      "MaxMetricsCount": 1000
    }
  }
}

重要

仪表板显示有关资源的信息,包括其配置、控制台日志和深入遥测。

仪表板中显示的数据可能很敏感。 例如,环境变量中的机密和遥测中的敏感运行时数据。 应注意将仪表板配置为安全访问。

有关详细信息,请参阅 仪表板安全性

注意

此页上所述的配置适用于独立仪表板。 若要配置 .NET.NET Aspire 应用主机项目,请参阅 应用主机配置

常见配置

选择 默认值 描述
ASPNETCORE_URLS http://localhost:18888 在其中提供仪表板前端的一个或多个 HTTP 终结点。 前端终结点用于在浏览器中查看仪表板。 .NET .NET Aspire 应用启动仪表板时,此地址受 HTTPS 保护。 建议使用 HTTPS 保护仪表板。
DOTNET_DASHBOARD_OTLP_ENDPOINT_URL http://localhost:18889 OTLP/gRPC 终结点。 此终结点托管 OTLP 服务,并使用 gRPC 接收遥测数据。 .NET .NET Aspire 应用启动仪表板时,此地址受 HTTPS 保护。 建议使用 HTTPS 保护仪表板。
DOTNET_DASHBOARD_OTLP_HTTP_ENDPOINT_URL http://localhost:18890 OTLP/HTTP 终结点。 此终结点托管 OTLP 服务,并使用 Protobuf 通过 HTTP 接收遥测数据。 .NET .NET Aspire 应用启动仪表板时,默认情况下未配置 OTLP/HTTP 终结点。 若要配置应用主机的 OTLP/HTTP 终结点,请在 launchSettings 中设置 DOTNET_DASHBOARD_OTLP_HTTP_ENDPOINT_URL env var 值。json。 建议使用 HTTPS 保护仪表板。
DOTNET_DASHBOARD_UNSECURED_ALLOW_ANONYMOUS false 将仪表板配置为不使用身份验证并接受匿名访问。 此设置是配置 Dashboard:Frontend:AuthModeDashboard:Otlp:AuthModeUnsecured的快捷方式。
DOTNET_DASHBOARD_CONFIG_FILE_PATH null JSON 配置文件的路径。 如果仪表板正在 Docker 容器中运行,则这是装载卷中配置文件的路径。 此值是可选的。
DOTNET_RESOURCE_SERVICE_ENDPOINT_URL null 仪表板为其数据连接的 gRPC 终结点。 如果未指定此值,仪表板会显示遥测数据,但没有资源列表或控制台日志。 此设置是 Dashboard:ResourceServiceClient:Url的快捷方式。

前端身份验证

仪表板前端终结点身份验证配置为 Dashboard:Frontend:AuthMode。 可以使用 OpenID Connect(OIDC)或浏览器令牌身份验证来保护前端。

浏览器令牌身份验证由请求令牌的前端工作。 可以在 UI 中输入令牌,也可以作为查询字符串值提供给登录页。 例如,https://localhost:1234/login?t=TheToken。 成功对令牌进行身份验证后,身份验证 cookie 将保存到浏览器,并将浏览器重定向到应用。

选择 默认值 描述
Dashboard:Frontend:AuthMode BrowserToken 可设置为 BrowserTokenOpenIdConnectUnsecured。 只能在本地开发期间使用 Unsecured。 在公开或在其他设置中托管仪表板时,不建议这样做。
Dashboard:Frontend:BrowserToken null 指定浏览器令牌。 如果未指定浏览器令牌,仪表板将生成一个。 想要使用浏览器令牌身份验证自动登录的工具可以指定令牌,并在查询字符串中使用令牌打开浏览器。 每次启动仪表板时,都应生成一个新令牌。
Dashboard:Frontend:OpenIdConnect:NameClaimType name 指定应用于显示经过身份验证的用户全名的一个或多个声明类型。 可以是单个声明类型或以逗号分隔的声明类型列表。
Dashboard:Frontend:OpenIdConnect:UsernameClaimType preferred_username 指定一个或多个声明类型,这些声明类型应用于显示经过身份验证的用户的用户名。 可以是单个声明类型或以逗号分隔的声明类型列表。
Dashboard:Frontend:OpenIdConnect:RequiredClaimType null 指定授权用户必须存在的声明。 授权失败,没有此声明。 此值是可选的。
Dashboard:Frontend:OpenIdConnect:RequiredClaimValue null 指定所需声明的值。 仅当同时指定 Dashboard:Frontend:OpenIdConnect:RequireClaimType 时才使用。 此值是可选的。
Authentication:Schemes:OpenIdConnect:Authority null 标识提供者的 URL(IdP)。
Authentication:Schemes:OpenIdConnect:ClientId null 信赖方(RP)的标识。
Authentication:Schemes:OpenIdConnect:ClientSecret null 只有真正的 RP 知道的秘密。
OpenIdConnectOptions 的其他属性 null 配置节中的值 Authentication:Schemes:OpenIdConnect:* 绑定到 OpenIdConnectOptions,例如 Scope

注意

使用 OpenIdConnect 作为终止 SSL 的反向代理后面的身份验证模式时,可能需要其他配置。 检查是否需要将 ASPNETCORE_FORWARDEDHEADERS_ENABLED 设置为 true

有关详细信息,请参阅 配置 ASP.NET Core 以使用代理服务器和负载均衡器

OTLP 身份验证

OTLP 终结点身份验证配置为 Dashboard:Otlp:AuthMode。 可以使用 API 密钥或 client 证书 身份验证来保护 OTLP 终结点。

API 密钥身份验证的工作原理是要求每个 OTLP 请求具有有效的 x-otlp-api-key 标头值。 它必须与主密钥或辅助密钥匹配。

选择 默认值 描述
Dashboard:Otlp:AuthMode Unsecured 可设置为 ApiKeyCertificateUnsecured。 只能在本地开发期间使用 Unsecured。 在公开或在其他设置中托管仪表板时,不建议这样做。
Dashboard:Otlp:PrimaryApiKey null 指定主 API 密钥。 API 密钥可以是任何文本,但建议使用至少 128 位的 entropy 值。 如果身份验证模式是 API 密钥,则此值是必需的。
Dashboard:Otlp:SecondaryApiKey null 指定辅助 API 密钥。 API 密钥可以是任何文本,但建议使用至少 128 位的 entropy 值。 此值是可选的。 如果指定了第二个 API 密钥,则传入 x-otlp-api-key 标头值可以匹配主密钥或辅助密钥。

OTLP CORS

可将跨域资源共享(CORS)配置为允许浏览器应用将遥测数据发送到仪表板。

默认情况下,浏览器应用被限制为进行跨域 API 调用。 这会影响将遥测数据发送到仪表板,因为仪表板和浏览器应用始终位于不同的域中。 若要配置 CORS,请使用 Dashboard:Otlp:Cors 节并指定允许的源和标头:

{
  "Dashboard": {
    "Otlp": {
      "Cors": {
        "AllowedOrigins": "http://localhost:5000,https://localhost:5001"
      }
    }
  }
}

请考虑以下配置选项:

选择 默认值 描述
Dashboard:Otlp:Cors:AllowedOrigins null 指定 CORS 的允许源。 它是逗号分隔的字符串,可以包含 * 通配符以允许任何域。 此选项是可选的,可以使用 DASHBOARD__OTLP__CORS__ALLOWEDORIGINS 环境变量进行设置。
Dashboard:Otlp:Cors:AllowedHeaders null 一个逗号分隔的字符串,表示 CORS 的允许标头。 此设置是可选的,可以使用 DASHBOARD__OTLP__CORS__ALLOWEDHEADERS 环境变量进行设置。

注意

仪表板仅支持用于发送遥测的 POST 方法,不允许为 CORS 配置允许的 方法Access-Control-Allow-Methods)。

资源

仪表板连接到资源服务以加载和显示资源信息。 client 是在仪表板中配置的,用于如何连接到服务。

资源服务 client 身份验证配置了 Dashboard:ResourceServiceClient:AuthMode。 可以将 client 配置为支持 API 密钥或 client 证书身份验证。

选择 默认值 描述
Dashboard:ResourceServiceClient:Url null 仪表板为其数据连接的 gRPC 终结点。 如果未指定此值,仪表板会显示遥测数据,但没有资源列表或控制台日志。
Dashboard:ResourceServiceClient:AuthMode null 可设置为 ApiKeyCertificateUnsecured。 只能在本地开发期间使用 Unsecured。 在公开或在其他设置中托管仪表板时,不建议这样做。 如果指定了资源服务 URL,则此值是必需的。
Dashboard:ResourceServiceClient:ApiKey null 要发送到 x-resource-service-api-key 标头中的资源服务的 API。 如果身份验证模式是 API 密钥,则此值是必需的。
Dashboard:ResourceServiceClient:ClientCertificate:Source null 可以设置为 FileKeyStore。 如果身份验证模式 client 证书,则此值是必需的。
Dashboard:ResourceServiceClient:ClientCertificate:FilePath null 证书文件路径。 如果源 File,则此值是必需的。
Dashboard:ResourceServiceClient:ClientCertificate:Password null 证书文件的密码。 此值是可选的。
Dashboard:ResourceServiceClient:ClientCertificate:Subject null 证书使用者。 如果源 KeyStore,则此值是必需的。
Dashboard:ResourceServiceClient:ClientCertificate:Store My 证书 StoreName
Dashboard:ResourceServiceClient:ClientCertificate:Location CurrentUser 证书 StoreLocation

遥测限制

遥测存储在内存中。 为了避免过多的内存使用率,仪表板对存储遥测的计数和大小有限制。 达到计数限制后,将添加新遥测,并删除最早的遥测数据。 达到大小限制后,数据将被截断为该限制。

遥测限制具有不同的范围,具体取决于遥测类型:

  • MaxLogCountMaxTraceCount 跨资源共享。 例如,MaxLogCount 值 5,000 配置仪表板,以存储所有资源的最多 5,000 个日志条目。
  • MaxMetricsCount 是按资源。 例如,MaxMetricsCount 值 10,000 配置仪表板,以存储每个资源最多 10,000 个指标数据点。
选择 默认值 描述
Dashboard:TelemetryLimits:MaxLogCount 10,000 日志条目的最大数目。 限制跨资源共享。
Dashboard:TelemetryLimits:MaxTraceCount 10,000 日志跟踪的最大数目。 限制跨资源共享。
Dashboard:TelemetryLimits:MaxMetricsCount 50,000 指标数据点的最大数目。 限制是按资源。
Dashboard:TelemetryLimits:MaxAttributeCount 128 遥测上的最大属性数。
Dashboard:TelemetryLimits:MaxAttributeLength null 属性的最大长度。
Dashboard:TelemetryLimits:MaxSpanEventCount null 跨度属性上的最大事件数。

其他

选择 默认值 描述
Dashboard:ApplicationName Aspire 要显示在 UI 中的应用程序名称。 这仅适用于未指定任何资源服务 URL 时。 资源服务存在时,该服务指定应用程序名称。

后续步骤

运行 .NET.NET Aspire 仪表板 的安全注意事项