如何将复杂的 Application Insights 引入 Farmer 部署?

How to bring complex Application Insights to a Farmer deployment?

我对 Farmer 产生了兴趣,并决定在我的项目中尝试一下。我设法用 Farmer 替换了大部分 ARM 模板。

但是,还有 Application Insights,因为我在那里有相当复杂的设置,包括一些警报、计划查询规则等。而 Farmer 目前 supports 为 AI 所做的一切只是名称、IP 掩码和样本百分比。

如何将 AI 设置插入 Farmer,这样我才不会因为那部分而拒绝 Farmer?我的服务如下所示:

let webApp = webApp {
    name appName
    service_plan_name servicePlanName
    sku WebApp.Sku.B1
    always_on
    ...
}

因此 webApp 安装程序为此设置了一个构建器关键字,link_to_unmanaged_app_insights:

Instructs Farmer to link this webapp to an existing app insights instance that is externally managed, rather than creating a new one.

但是没有示例,只有 one test 使用它,所以经过一些试验后,这被证明是有效的:

  1. 在源代码中继续在 ARM 中设置 AI,例如arm-template-ai.json.
  2. 记下 AI 资源 ID。
  3. 在 F# 应用设置中使用上述关键字:
let webApp = webApp {
    name appName
    service_plan_name servicePlanName
    sku WebApp.Sku.B1
    always_on
    link_to_unmanaged_app_insights (ResourceId.create appInsightsName)
}
  1. 在发布管道中,首先从源代码中的 AI ARM 模板部署 AI。
  2. 然后部署 Farmer 生成的 ARM 模板中的所有其他资源。

它在 Azure DevOps 中的外观示例: