我在 Azure Kubernetes 服务中部署了多个 Pod。
有一个 K8s 服务用于连接部署 Pod。
该服务具有可在 Azure 虚拟网络中访问的专用 IP。服务类型为LoadBalancer。
我想监控并查看服务是否启动。如果未启动,则触发电子邮件警报。
我已经确定了两个选项:
选项 1:
我启用了 AKS 诊断以便获取服务日志。当我使用下面的查询检查日志时,我可以看到服务失败日志。我想我可以使用 Azure Monitor 中的这些日志来触发警报。我仍然需要验证它是否适用于每种类型的故障。
KubeEvents
| where TimeGenerated > ago(7d)
| where not(isempty(Namespace))
| where ObjectKind == 'Service'
选项 2:
创建一个启用了 HTTPS API 的 Azure 函数,以便我可以从 Pingdom 外部调用它。
确保该功能将AppService与VM一起使用,以便它可以访问私有(private)IP和服务(因为这是使用VM,所以增加了成本)。该函数检查私有(private)IP并查看是否返回200,并且将返回200;否则,将返回错误代码。因此,Pingdom 将保留正常运行时间详细信息,并在出现故障时发出相应的警报。
摘要:
我对选项一不是 100% 确定。对于第二个选项,似乎做了太多工作,我认为应该有更好、更健壮的方法来做到这一点。
因此,我有兴趣从一些 Azure 和 K8s 专家那里获得反馈,他们处理了该问题并以更可靠的方式解决了该问题。
最佳答案
使用 Azure Application Insights 描述了两个[私有(private)监视选项] ( https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-private-test )。
- 允许有限的入站连接
- 使用 Azure Functions,如选项 2 中所述。
我个人更喜欢端点监控更加独立于托管服务的资源。
关于azure - 如何监视 Azure AKS 中非公开的 Kubernetes 服务的正常运行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76335368/