问题描述
想要构建一个系统,用于存储和检索请求/响应的相关信息,包括处理日志、指标以及请求/响应的实际内容。用户希望能够在与第三方提供商集成时进行故障排除。用户已经尝试过使用ZipKin和Spring Cloud Sleuth,但发现它们主要用于”追踪”,并没有持久化、处理和显示实际的请求/响应内容。用户想知道这种”请求/响应持久化”的正确名称是什么,以及是否有一种与编程语言无关的解决方案。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
这种将请求/响应存储起来的系统通常被称为”审计追踪”或”审计日志”系统。它可以帮助用户记录和存储请求/响应的详细信息,以便进行故障排除和监控。下面是一种实现这种系统的方法:
1. 使用一个前置代理(如Nginx、Envoy等)来拦截所有的请求,并为每个请求分配一个唯一的关联ID。
2. 将请求和响应的相关信息(包括请求/响应体)发送到一个中央存储系统(如Elasticsearch)进行存储和索引。
3. 使用一个可视化工具(如Kibana或Grafana)来查询和展示存储的请求/响应数据。
以下是一个示例架构图:
+-------------------+ +-------------------+ +-------------------+
| | | | | |
| Front Proxy | | Storage System | | Visualization |
| (e.g. Nginx) | ------> | (e.g. Elasticsearch) | ------> | Tool |
| | | | | |
+-------------------+ +-------------------+ +-------------------+
在这个示例中,前置代理拦截所有的请求,并为每个请求分配一个唯一的关联ID。然后,请求和响应的相关信息被发送到一个中央存储系统(如Elasticsearch)进行存储和索引。最后,用户可以使用可视化工具(如Kibana或Grafana)来查询和展示存储的请求/响应数据。
方案2
另一种实现请求/响应存储的方法是使用现有的日志收集工具(如Logstash、Fluentd等)来收集和存储请求/响应的日志。这种方法不需要对应用程序进行修改,可以在编程语言无关的情况下实现请求/响应的存储。以下是一个示例架构图:
+-------------------+ +-------------------+ +-------------------+
| | | | | |
| Application | | Log Collection | | Storage System |
| | ------> | (e.g. Logstash) | ------> | (e.g. Elasticsearch) |
| | | | | |
+-------------------+ +-------------------+ +-------------------+
在这个示例中,应用程序生成的日志被收集到一个中央日志收集系统(如Logstash)中,并存储在一个中央存储系统(如Elasticsearch)中。用户可以使用可视化工具(如Kibana或Grafana)来查询和展示存储的请求/响应数据。
请注意,这种方法可能需要对应用程序进行一些配置,以确保生成的日志包含请求/响应的相关信息。
方案3
除了上述的解决方案,还有一些商业化的集成提供商可以提供类似的功能。这些提供商通常提供一个控制面板,用户可以在其中找到与其流程相关的信息,包括请求/响应的内容。用户可以通过搜索类似”请求/响应存储”或”审计追踪”的关键词来寻找这些提供商。
请注意,不同的解决方案可能适用于不同的场景和需求。用户应根据自己的具体情况选择最适合的解决方案。