网关kong记录接口处理请求和响应插件 tcp-log-with-body的安装

news2024/11/17 8:23:54

tcp-log-with-body

介绍

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

Kong的tcp-log-with-body插件

软件环境说明
  • kong version 2.1.4 - 2.8.3 [可用亲测]
  • CentOS version 7.3.1611
kong version --vv
2024/02/29 00:17:48 [verbose] Kong: 2.1.4
2024/02/29 00:17:48 [debug] ngx_lua: 10015
2024/02/29 00:17:48 [debug] nginx: 1015008
2024/02/29 00:17:48 [debug] Lua: LuaJIT 2.1.0-beta3
2.1.4


cat /etc/centos-release
CentOS Linux release 7.3.1611 (Core) 
插件安装教程
  1. 找到 kong 插件存放位置
[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

  1. git 克隆项目到plugins目录下
git clone https://gitee.com/XiongMingcai/tcp-log-with-body.git
  1. 修改kong配置文件 加入启用tcp-log-with-body 插件
vim /etc/kong/kong.conf

修改位置

plugins = bundled,tcp-log-with-body 
  1. 重启kong

监听启动错误日志

tail -f /usr/local/kong/logs/error.log 

重启kong

sudo systemctl restart kong
使用说明
  1. 配置tcp-log-with-body插件(见封面图)

  2. 接收日志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');
});

  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'
  },
.....

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1485578.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

8、Redis-Jedis、Lettuce和一个Demo

目录 一、Jedis 二、Lettuce 三、一个Demo Java集成Redis主要有3个方案:Jedis、Lettuce和Redisson。 其中,Jedis、Lettuce侧重于单例Redis,而Redisson侧重于分布式服务。 项目资源在文末 一、Jedis 1、创建SpringBoot项目 2、引入依赖 …

【PDF技巧】网上下载的pdf文件怎么才能编辑

不知道大家有没有遇到过网上下载的PDF文件不能编辑的情况,今天我们来详细了解一下导致无法编辑的原因即解决方法有哪些。 第一种原因:PDF文件中的内容是否是图片,如果确认是图片文件,那么我们想要编辑,就可以先使用PD…

《Improving Calibration for Long-Tailed Recognition》阅读笔记

论文标题 《Improving Calibration for Long-Tailed Recognition》 改进长尾识别的校准工作 作者 Zhisheng Zhong、 Jiequan Cui、Shu Liu 和 Jiaya Jia 香港中文大学和 SmartMore 初读 摘要 深度神经网络在训练数据集类别极度不平衡时可能会表现不佳。最近&#xff0c…

高中数学:函数的单调性

一、概念 二、单调区间的表示方法 注意 1、两个不相连的部分,单调性相同,则两个单调区间用逗号隔开,不能用∪号连接。 2、单调区间端点都用开区间表示,最安全。 三、常见题型 1、普通简单函数单调性判断 解题思路:画…

VueCli的安装与卸载

文章目录 一.Node安装包的报读网盘提取码二、Vue脚手架Cli三、Vue-CLI使用步骤(自定义安装)1.转换路径并创建项目2.创建步骤的解释(保姆级)3.等待vue项目自己创建好(保姆级) 四、通过npm对vue的安装与卸载 一.Node安装包的报读网盘提取码 下面的链接为地址: Node的百度网盘提取…

【操作系统(Operator System)】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、概念 二、结构示意图 三、尝试理解操作系统 系统调用和库函数概念 承上启下 总结 前言 世上有两种耀眼的光芒,一种是正在升起的太阳&#xff…

每日下载超1000万次,这个前端工具太有用了!

今天来分享一个前端必备的工具,其每天在 npm 上的下载量高达 1000 万次,几乎每个前端项目都在用,它就是 PostCSS。这款工具已经成为前端开发领域中不可或缺的一部分,之所以如此受欢迎,不仅是因为它能够帮助开发者自动化…

双周回顾#007 - 前端与后端

前端的问题不是难,而是它面对最终用户。只要用户的喜好和口味发生变化,前端就必须跟上。 这导致前端不得不快速变化,因为用户的口味正在越来越快地改变。 后端不需要面对最终用户,需要解决的都是一些经典的计算机科学问题&#…

智能的花火,照亮一座5G钢铁工厂的时代之舞

“东风夜放花千树。更吹落,星如雨。凤箫声动,玉壶光转,一夜鱼龙舞”,辛弃疾在《青玉案》中描绘的“打铁花”,是刚刚过去的春节假期中,全国各地都在上演的中式浪漫。 当铁水被击打向高空,犹如千万…

苍穹外卖学习 Day10 Day11 Day12

前言 用于记录苍穹外卖Day10、Day11、Day12的学习 Day10 订单状态定时处理 来电提醒 客户催单 订单状态定时处理 Spring Task Spring Task是一个任务调度工具,可以按照约定的时间自动执行某个代码逻辑(定时自动执行某段Java代码) cron表…

[GXYCTF2019]BabyUpload1 -- 题目分析与详解

目录 一、题目分析 1、判断题目类型: 2、上传不同类型的文件进行测试: 二、题目详解 1、写出.htaccess文件: 2、.htaccess 文件配合 .jpg 上传: 3、利用 中国蚁剑/中国菜刀 获取flag: 一、题目分析 1、判断题目…

亚马逊云科技实时 AI 编程助手 Amazon CodeWhisperer,开发快人一步

​ 亚马逊云科技:https://mic.anruicloud.com/url/1024 ​ Amazon CodeWhisperer 是一款 AI 编码配套应用程序,可在 IDE 中生成 整行代码和完整的函数代码建议,以帮助您更快地完成更多工作。在本系列 文章中,我们将为您详细介绍 A…

Cloud+Consul

Cloud整合Zookeeper代替Eureka-CSDN博客 Consul简介 Consul是一套开源的分布式服务发现和配置管理系统 What is Consul? | Consul | HashiCorp DeveloperConsul is a service networking solution that delivers service discovery, service mesh, and network security ca…

#WEB前端(CCS选择器)

1.实验&#xff1a;CCS选择器 2.IDE&#xff1a;VSCODE 3.记录&#xff1a; 子代选择器、后代选择器、相邻兄弟选择器、类选择器、伪元素选择器&#xff08;鼠标悬停&#xff09;、ID选择器、调用选择器&#xff08;全选&#xff09; 4.代码&#xff1a; <!DOCTYPE html…

2024龙年特别篇 -- 魔法指针 之 指针变量

目录 ​编辑 字符指针变量 字符指针 字符数组 关于字符数组的试题 数组指针变量 数组指针 利用指针数组打印数组 打印二维数组 数组作为形参 当形参为指针时&#xff08;指针数组&#xff09; 函数指针变量 利用函数实现加法输出的多种方式 字符指针变量 字符指针 char …

超详细红黑树的模拟实现

前言 有人说设计出AVL树的的人是个大牛&#xff0c;那写红黑树&#xff08;RBTree&#xff09;的人就是天才&#xff01; 上一篇文章&#xff0c;我们已经学习了AVL树&#xff0c;牛牛个人认为AVL树已经够优秀了&#xff0c;那让我们一起探究一下&#xff0c;为什么红黑树比AV…

【C语言】InfiniBand 驱动mlx4_ib_init和mlx4_ib_cleanup

一、中文讲解 这两个函数是Linux内核模块中对于Mellanox InfiniBand 驱动程序初始化和清理的函数。 mlx4_ib_init()函数是模块初始化函数&#xff0c;使用__init宏标注&#xff0c;表示该函数只在模块加载时运行一次。 函数执行的步骤如下&#xff1a; 1. 通过alloc_ordered_w…

sklearn.preprocessing.RobustScaler(解释和原理,分位数,四分位差)

提示&#xff1a;sklearn.preprocessing.RobustScaler&#xff08;解释和原理&#xff0c;分位数&#xff0c;四分位差&#xff09; 文章目录 [TOC](文章目录) 一、RobustScaler 是什么&#xff1f;二、代码1.代码2.输出结果 总结 提示&#xff1a;以下是本篇文章正文内容&…

计算机网络|Socket

文章目录 Socket并发socket Socket Socket是一种工作在TCP/IP协议栈上的API。 端口用于区分不同应用&#xff0c;IP地址用于区分不同主机。 以下是某一个服务器的socket代码。 其中with是python中的一个语法糖&#xff0c;代表当代码块离开with时&#xff0c;自动对s进行销毁…

[VulnHub靶机渗透] CONNECT THE DOTS

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏 …