如何将复杂的Application Insights带到Farmer部署中?

问题描述

我对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

指示Farmer将此Web应用程序链接到外部管理的现有应用程序见解实例,而不是创建新实例。

但是,这里没有示例,只有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中的外观:

Pipeline