api 网关 kong 数据库记录请求响应报文

本文涉及的产品
云原生 API 网关,700元额度,多规格可选
简介: Kong的tcp-log-with-body插件是一个高效的工具,它能够转发Kong处理的请求和响应。这个插件非常适用于需要详细记录API请求和响应信息的情景,尤其是在调试和排查问题时。

tcp-log-with-body

介绍

Kong的tcp-log-with-body插件是一个高效的工具,它能够转发Kong处理的请求和响应。这个插件非常适用于需要详细记录API请求和响应信息的情景,尤其是在调试和排查问题时。

软件环境说明

  • kong version 2.1.4
  • CentOS version 7.3.1611

插件安装教程

  1. 找到 kong 插件存放位置
    ```bash
    ─[root@bwg] - [/usr/local/share/lua/5.1/kong/plugins] - [2024-02-28 11:52:33]
    └─[0] ls
    acl basic-auth file-log http-log-with-body key-auth post-function request-size-limiting session udp-log
    acme bot-detection grpc-gateway http-mirror ldap-auth pre-function request-termination statsd zipkin
    aws-lambda correlation-id grpc-web ip-restriction loggly prometheus request-transformer syslog
    azure-functions cors hmac-auth jwt log-serializers proxy-cache response-ratelimiting tcp-log
    base_plugin.lua datadog http-log kafka-log oauth2 rate-limiting response-transformer tcp-log-with-body
2. git 克隆项目到plugins目录下
```bash
git clone https://gitee.com/XiongMingcai/tcp-log-with-body.git
AI 代码解读
  1. 修改kong配置文件 加入启用tcp-log-with-body 插件
vim /etc/kong/kong.conf
AI 代码解读

修改位置

plugins = bundled,tcp-log-with-body
AI 代码解读
  1. 重启kong

监听启动错误日志

tail -f /usr/local/kong/logs/error.log
AI 代码解读

重启kong

sudo systemctl restart kong
AI 代码解读

使用说明

  1. 配置tcp-log-with-body插件

输入图片说明

  1. 接收日志tcp请求 node.js 模拟tcp-log-server
const net = require('net');
const {inspect} = require("util");

// Create a server instance
const server = net.createServer((socket) => {


    socket.on('data', (data) => {
 // 将数据转换为字符串,并以JSON格式输出

        const dataString = data.toString('utf8');
        console.log("Received data:", inspect(JSON.parse(dataString), false, null, true));

});


    socket.on('end', () => {

    });
});

// Error callback
server.on('error', (err) => {
    console.error('Server error:', err);
});

// Listening callback
server.listen(9999, '127.0.0.1', () => {
    console.log('Server is listening on 127.0.0.1:9999');
});
AI 代码解读
  1. 效果
.....
  request: {
   
   
    querystring: {
   
   },
    size: '563',
    uri: '/ok',
    url: 'https://ssl.hunangl.com:443/ok',
    headers: {
   
   
      host: 'ssl.hunangl.com',
      authorization: 'REDACTED',
      'postman-token': 'a0cf800e-06ac-41b0-8a4d-d849c945cee1',
      accept: '*/*',
      digest: 'SHA-256=eji/gfOD9pQzrW6QDTWz4jhVk/dqe3q11DVbi6Qe4ks=',
      'request-id': '5c54a71f-9bdb-445c-8549-f4af181ad49c',
      'cache-control': 'no-cache',
      'content-length': '13',
      'accept-encoding': 'gzip, deflate, br',
      'user-agent': 'PostmanRuntime/7.36.3',
      'x-date': 'Thu, 29 Feb 2024 05:14:21 GMT',
      connection: 'keep-alive',
      'content-type': 'application/json'
    },
    body: '{"foo":"bar"}',
    method: 'POST'
  },
  client_ip: '54.86.50.139',
.....
response: {
   
   
    body: '{
   
   "host":"0.0.0.0:8300","connection":"keep-alive","x-forwarded-for":"54.86.50.139","x-forwarded-proto":"https","x-forwarded-host":"ssl.hunangl.com","x-forwarded-port":"443","x-real-ip":"54.86.50.139","content-length":"13","x-date":"Thu, 29 Feb 2024 05:14:21 GMT","authorization":"hmac username=\\"hmac_username\\", algorithm=\\"hmac-sha256\\", headers=\\"x-date request-line digest\\", signature=\\"Kh+sGhrL3NbFNa9dsLdTs/q6hMBublOEPYUw4j8rLGM=\\"","digest":"SHA-256=eji/gfOD9pQzrW6QDTWz4jhVk/dqe3q11DVbi6Qe4ks=","content-type":"application/json","user-agent":"PostmanRuntime/7.36.3","accept":"*/*","cache-control":"no-cache","postman-token":"a0cf800e-06ac-41b0-8a4d-d849c945cee1","accept-encoding":"gzip, deflate, br","request-id":"5c54a71f-9bdb-445c-8549-f4af181ad49c"}',
    headers: {
   
   
      'content-type': 'application/json; charset=utf-8',
      date: 'Thu, 29 Feb 2024 05:14:15 GMT',
      connection: 'close',
      'server-port': '8300',
      'request-ip': '54.86.50.139',
      'content-length': '761',
      via: 'kong/2.1.4',
      'x-kong-proxy-latency': '6',
      'x-kong-upstream-latency': '12',
      'request-id': '5c54a71f-9bdb-445c-8549-f4af181ad49c'
    },
    status: 200,
    size: '1075'
  },
.....
AI 代码解读
目录
打赏
0
0
0
0
1
分享
相关文章
淘宝商品详情API的调用流程(python请求示例以及json数据示例返回参考)
JSON数据示例:需要提供一个结构化的示例,展示商品详情可能包含的字段,如商品标题、价格、库存、描述、图片链接、卖家信息等。考虑到稳定性,示例应基于淘宝开放平台的标准响应格式。
Python 请求微店商品详情数据 API 接口
微店开放平台允许开发者通过API获取商品详情数据。使用Python请求微店商品详情API的主要步骤包括:1. 注册并申请API权限,获得app_key和app_secret;2. 确定API接口地址与请求参数,如商品ID;3. 生成签名确保请求安全合法;4. 使用requests库发送HTTP请求获取数据;5. 处理返回的JSON格式响应数据。开发时需严格遵循微店API文档要求。
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
DeepClaude:结合 DeepSeek R1 和 Claude AI 各自优势开发的 AI 应用平台,支持 API 调用和零延迟的即时响应
DeepClaude 是一个开源的 AI 应用开发平台,结合了 DeepSeek R1 和 Claude 模型的优势,提供即时响应、端到端加密和高度可配置的功能。
337 4
DeepClaude:结合 DeepSeek R1 和 Claude AI 各自优势开发的 AI 应用平台,支持 API 调用和零延迟的即时响应
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
79 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
工业智能网关实现北向自定义报文配置流程
北向接口是设备连接物联网云平台的接口,允许云平台统一监管各厂商设备的运行与报警状态。为解决不同公司报文格式差异导致的数据解析问题,工业智能网关支持北向自定义报文功能,用户可配置不同的报文格式,确保数据准确传输。配置流程包括网关中心、IOT数据云平台和配置工具的设置,最终通过日志或MQTTfx验证上报情况。
54 4
DeepSeek Engineer:集成 DeepSeek API 的开源 AI 编程助手,支持文件读取、编辑并生成结构化响应
DeepSeek Engineer 是一款开源AI编程助手,通过命令行界面处理用户对话并生成结构化JSON,支持文件操作和代码生成。
956 6
DeepSeek Engineer:集成 DeepSeek API 的开源 AI 编程助手,支持文件读取、编辑并生成结构化响应
云端问道21期方案教学-应对高并发,利用云数据库 Tair(兼容 Redis®*)缓存实现极速响应
云端问道21期方案教学-应对高并发,利用云数据库 Tair(兼容 Redis®*)缓存实现极速响应
云端问道21期实操教学-应对高并发,利用云数据库 Tair(兼容 Redis®)缓存实现极速响应
本文介绍了如何通过云端问道21期实操教学,利用云数据库 Tair(兼容 Redis®)缓存实现高并发场景下的极速响应。主要内容分为四部分:方案概览、部署准备、一键部署和完成及清理。方案概览中,展示了如何使用 Redis 提升业务性能,降低响应时间;部署准备介绍了账号注册与充值步骤;一键部署详细讲解了创建 ECS、RDS 和 Redis 实例的过程;最后,通过对比测试验证了 Redis 缓存的有效性,并指导用户清理资源以避免额外费用。
获取商品详情API的请求格式是什么
获取商品详情API的请求格式通常依赖于特定的电商平台或服务提供商,但一般遵循类似的结构。以下是一个概括性的说明,以及针对几个主流电商平台的示例:
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等