【发布时间】:2019-01-02 09:00:57
【问题描述】:
我正在管理一个产品,我们为每个客户设置一个完整的环境。 该产品由一个 Angular 前端、一个 ASP.Net.Core 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 资源,并且所有 API 共享相同的检测密钥。
不过,对于健康检查,我可以看到我只能向一个资源添加 100 个 ping 测试。我正在考虑建立一个独立的服务,使用站点列表,可以使用新的 .Net core 2.2。运行状况检查并从外部服务器 ping 每个站点 - 然后在 .Net Core Health Check 上将其设置为 Insight 资源上的 ping 测试。 (以此为灵感:https://www.hanselman.com/blog/HowToSetUpASPNETCore22HealthChecksWithBeatPulsesAspNetCoreDiagnosticsHealthChecks.aspx)。但是我不会从 Insights 区域测试中受益 - 因为所有请求都来自我的 Health Check API。
但我不确定是否以及如何设置它,以便一旦单个站点出现故障,例如由于配置错误,我会收到只有一个站点关闭的通知。
所以我想了解其他人(如果有的话)是如何实现这样的场景的。
我愿意
- 服务器级别的洞察力,例如请求,负载等组合的站点。
- 但是向下钻取到单个站点也可以很好地为客户分担负载
- 每个站点上的两个 ping 测试,Angular index.html 和连接到数据库的 API 调用。
- 易于设置,因此当我们获得新客户时,监控部分可以自行配置或编写脚本。至少我们不应该登录 Azure Insights 门户。
我不一定要寻找完整的实现细节,更多关于如何构建这样的设置的架构指南。
也欢迎对 Application Insights 以外的其他产品提出建议。刚刚看到 Insights 非常适合 Asp.Net.Core API。已经在使用 Sentry 收集错误报告。
最好的问候 /安德斯
【问题讨论】:
标签: asp.net-core-webapi azure-application-insights