组织单租户服务的应用程序洞察/运行状况检查



我正在管理一个产品,我们为每个客户设置了一个完整的环境。该产品由Angular前端和ASP组成。网核心API后端和SQL服务器数据库。

由此产生的体系结构是我们有例如

https://customer1.product.com和https://customer1.product.com/api

https://customer2.product.com和https://customer1.product.com/api

等等。。。每个客户都有一个站点,但多个客户站点共享同一IIS服务器。

我一直在研究至少为API启用Application Insight,并启用运行状况检查。

我在概念验证中完成了这两项工作——这里的问题是如何最好地在Application Insights中组织一长串网站。

我想获得对服务器的全面了解,以及API等的请求总数

这就引出了一个共享的Insight Resource,并且所有API共享相同的工具密钥。

不过,对于健康检查,我可以看到我只能向一个资源添加100个ping测试。我正在考虑建立一个独立的服务,使用一个网站列表,可以使用新的。净核心2.2。从外部服务器对每个站点进行健康检查和ping,然后在上进行设置。Net Core运行状况检查作为Insight Resource上的ping测试。(以此为灵感:https://www.hanselman.com/blog/HowToSetUpASPNETCore22HealthChecksWithBeatPulsesAspNetCoreDiagnosticsHealthChecks.aspx)。但我不会从Insights区域测试中受益,因为所有请求都来自我的Health Check API。

但我不确定我是否以及如何设置,这样,一旦一个网站出现故障,例如配置错误,我就会被告知只有一个网站停机。

因此,我想就其他人(如果有的话)如何实现这样的场景提供一些意见。

我想要

  • 服务器级别的洞察力,例如站点的请求、负载等。
    • 但是深入到单个站点也可以为客户拆分负载
  • 每个站点上有两个ping测试,Angular index.html和连接到数据库的API调用
  • 易于设置,因此当我们获得新客户时,监控部分可以自行配置或编写脚本。至少我们不应该登录Azure Insights门户

我不一定要寻找完整的实现细节,更多关于如何构建这样的设置的架构指南。

也欢迎对Application Insights以外的其他产品提出建议。刚刚看到Insights非常适合Asp。网核心API。已经在使用Sentry收集错误报告。

致以最良好的问候/安德斯

让我分享一下可能的情况,希望它能为解决方案提供帮助。

快速提示-如果需要,可以通过ARM编写所有内容的脚本。包括Application Insights资源。不管你最后选择什么解决方案,都不应该是一个问题(不过不同的解决方案可能需要更多的脚本)。

选项1.每个人都有自己的人工智能资源。所有遥测(服务器、客户端、可用性)都会报告给它

这将为您提供出色的警报功能,深入体验。但很难将精心策划的体验用于跨客户的查询。

话虽如此,实际上有一种方法可以在Application Insights Analytics中跨Application Insight斯资源查询。很难使这样的查询高效(因为它们可能需要在集群之间传递数据),所以您需要了解是否可以获得所需的数据。

选项2.为所有客户提供一个用于所有遥测的AI资源。客户仅按操作名称进行区分。

易于跨客户查询。但更难为特定客户进行调查。此外,每个资源的网络测试限制为100次

选项3。拥有一个用于服务器/客户端遥测的AI资源。使用RoleName来区分客户。拥有AI资源/客户以获得可用性。

这允许获得跨客户的摘要数据和范围为单个RoleName(客户)的数据。

可用性-允许为每个客户配置所需的测试数量。每个客户都有单独的报告。分布式跟踪应该继续工作(Application Insights可以跨资源工作)。

请注意,只有当拓扑结构简单并且不需要将RoleName用于其他用途时,这才有效。

希望它能有所帮助!

最新更新