有没有办法在golang中调用rest api时获得警报

问题描述 投票:0回答:1

我有一个 golang system_info 休息服务,可以执行基本的 CRUD 操作。它的服务捕获一些基本的系统信息并更新到服务器。此 System_info Rest api 使用 Kubernetes 作为微服务托管。

但是,在从系统捕获任何详细信息之前,该服务需要 IP 地址,并且准备系统的任何人调用我的其余端点都会上传 IP 地址和主机名等基本信息。

现在,一旦使用 system_info Rest api 端点将此 IP 地址上传到 postgres 表,system_info Rest 服务应该 ping 这些 IP 地址并检查它们是否收到任何响应,并更新机器已启动和运行的状态。

如何实现这一点,服务在 Kube 中运行 - 一旦调用端点并更新 IP 地址,服务如何知道表具有 IP 地址,现在服务应该 PING 这些 IP 地址?

我的想法是两种方法之一

  1. 当调用其余端点更新 IP 地址时,仅捕获 IP 地址并 ping 它们中的每一个,并捕获状态并更新 postgres 中的状态列,但这会显着减慢创建/更新操作,因为服务需要 ping 每个IP 并等待响应并更新状态
  2. 需要编写一个轮询服务来检查是否有 IP 地址或者 postgres 中的 IP 地址列是否已更新,然后 ping 它们并更新状态,但是服务如何知道添加了新 IP 或新的 IP 地址集被添加了?

想知道是否有更好的方法来处理这种情况?我对如何设计这个功能感到困惑。

如有任何建议或指导,我们将不胜感激。谢谢

postgresql rest go design-patterns architecture
1个回答
0
投票

您可以使用在 Kubernetes 中运行的 Prometheus 运算符,结合 Probe 资源或 Blackbox-exporter 来执行基本的 http 探测。

因此,不要写入 Postgres,而是使用 Kubernetes Go 客户端创建此类资源,并将其存储在 etcd 数据库中。

© www.soinside.com 2019 - 2024. All rights reserved.