一款用于分析java socket连接问题的工具

news2024/9/27 7:26:18

network-tools

介绍

network-tools基于sun jdk、Oracle jdk开发,拦截基于java socket请求,它包括

  • ​ http 客户端

  • ​ jdbc 客户端

  • ​ mq 客户端

  • ​ redis 客户端

    目前提供如下功能:

  • ​ 最近端点连接情况

  • ​ 最近与远程端点连接情况(可用于防火墙端口开通)

  • ​ 最近连接情况

  • ​ 最近错误连接情况

  • ​ 最近最耗时的连接情况

  • ​ 最近连接最频繁远程端点情况

其他更复杂的逻辑可查询influxdb库中的t_connect表(_measurement )。

软件架构
系统架构

在这里插入图片描述

JVM:sun/oracle jdk

​ network-agent:收集socket连接情况,目前使用有界队列

​ network-aep:接收所有network-agent信息,存储到influxdb库

​ influxdb:时序数据库、支持快速分析、查询

​ influxdb-console:一个web应用,安装influxdb时自带,用于维护influxdb。

​ 客户端:一般指人,可访问控制台可有限的web API,也可指业务服务器,业务根据自身需求对接API。

存储模型

​ _measurement:t_connect 存储socket连接(失败和成功)

​ time:连接结束时间

​ local_ip: 本地IP (连接失败则不能获取,选择127.0.0.1)

​ local_port: 本地端口(连接失败则不能获取,选择0)

​ remote_ip 远程IP

​ remote_port 远程端口

​ cost: 连接耗时,单位毫秒

​ success: 0代表失败、1代表连接成功

​ stack: 不报错则显示连接时的代码堆栈,报错则显示异常堆栈。

安装教程

源码目录https://gitee.com/jiangc2020/network-tools

​ 1、根据情况选择windows、linux版本,influxdb下载安装参考https://docs.influxdata.com/influxdb/v2/install,需要注意的是http-bind-address配置IP或端口,后续将使用http://localhost:8086打开控制台

​ 2、获取network-agent

​ 源码打包:执行network-agent/pom.xml的 mvn clean package,最终生成target/network-agent-jar-with-dependencies.jar

​ 3、获取network-aep

​ 源码打包:执行network-aep/pom.xml的 mvn clean package,最终生成target/aep目录

​ 4、安装network-agent

​ 在需要监控的JVM启动脚本中添加类似

​ -javaagent:/home/user/nstcapp/bems/network-agent-jar-with-dependencies.jar=http://localhost:8084/hello,其中192.168.61.142:8084为network-aep地址。一般一个JVM应用要配置对应的应用名称,则使用分号追加,如此时应用是bac,则为:

http://localhost:8084/hello;bac

​ JVM启动后连接数据将推送至network-aep

​ 5、启动network-aep

​ 修改config/application.properties文件

server.port = 8084
#spring.jpa.show-sql=true
spring.http.encoding.charset=UTF-8
spring.application.name=network-aep

#按influx配置修改
influx.org=n
influx.bucket=test3
influx.token=owaq3la2CsQYXbxetm4yz3i-DVQUP8LNQEnX-7D5mcpH4dpTzsfCnKgdXixftrXqq4PdK3hraBSwFC9f-xqBDw==
influx.url=http://localhost:8086

#端口映射文件
port.file=D:/jeecg-boot/ports.csv

​ 其中port.csv文件格式如下:

在这里插入图片描述

在getConnectRelations和getRemoteConnectRelations接口中返回的列表中的每个元素是一个如下格式的数组,

[
        "test",
        "127.0.0.1",
        "127.0.0.1",
        "58769",
        ""
    ]

其中"test"为本地appName,在应用启动脚本中指定,用“;”分割的后一部分,若不配置默认为“test”,如下

在这里插入图片描述

请注意,若配置了ports.csv,则有5个元素,否则只有4个;而如果配置了ports.csv但内容中不含糊第二、三个元素指定的KEY,图中为127.0.0.1,58769,在port文件中找不到则为空字符串。

进入aep目录,执行java -jar network-aep-0.0.1-SNAPSHOT.jar

使用说明

1、在浏览器中通过aep web端口http://localhost:8084提供服务一下

​ getTop?top=100 #获取最近100个连接情况

在这里插入图片描述

​ getTopCostConnects?h=5&top=10 #获取最近5小时内最耗时的10个连接情况

在这里插入图片描述

​ getTopCountRemoteEndpoints?h=5&top=10 #获取最近5小时内连接最多的远程端点情况

在这里插入图片描述

​ getConnectRelations?d=1 #获取所有连接情况

在这里插入图片描述

​ getRemoteConnectRelations?d=1 #获取所有连接情况(排除127.0.0.1)

在这里插入图片描述

​ getTopErrConnects?h=5&top=10 #获取最近5个小时最近10个错误连接情况

在这里插入图片描述

​ 2、在浏览器中打开influxdb控制台http://localhost:8086/,登录后定位到notebook,编写flux script

查询近4天失败连接情况,具体语法参考官方文档https://docs.influxdata.com/flux/v0/stdlib/

import "strings"
from(bucket:"test3")  |> range(start:-4d)  |> filter(fn:(r)=> r._measurement == "t_connect"  )
|> pivot(rowKey: ["_time"], columnKey: ["_field"], valueColumn: "_value") |> group()
|> filter(fn:(r)=> r.success == 0 )
|> sort(columns: ["_time"], desc: true) 
参与贡献
  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request
特技
  1. 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md
  2. Gitee 官方博客 blog.gitee.com
  3. 你可以 https://gitee.com/explore 这个地址来了解 Gitee 上的优秀开源项目
  4. GVP 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
  5. Gitee 官方提供的使用手册 https://gitee.com/help
  6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 https://gitee.com/gitee-stars/
    官方提供的使用手册 https://gitee.com/help
  7. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 https://gitee.com/gitee-stars/

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

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

相关文章

公寓项目(尚庭公寓笔记)

公寓项目 课程介绍项目概述移动端业务功能后台管理系统业务功能-公寓管理后台管理系统业务功能-租赁功能后台管理系统业务功能-系统管理&用户管理核心业务功能技术概述 项目开发流程项目原型数据库设计理论ER模型数据库设计流程 数据库设计实操概念模型逻辑模型公寓信息房间…

sse fetch-event-source插件的使用

sse简单介绍https://blog.csdn.net/weixin_42400404/article/details/141895877?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22141895877%22%2C%22source%22%3A%22weixin_42400404%22%7D fetch-event-source gitHub地址 通信…

快速构建 AI 应用的利器:Python 库 Mesop

在当今这个 AI 技术飞速发展的时代,开发者们总是希望能够更快、更便捷地构建 AI 应用程序。今天,我要给大家介绍一个由 Google 推出的 Python 库——Mesop。它的出现,让我们能够轻松地搭建高效的 AI 应用。 Mesop 是什么? Mesop …

C#如何使用外部别名Extern alias

说到 extern 关键字,只是很简单告诉大家用来做区分两个不同 dll 有相同的命名空间和类,可以使用这个关键字。 在遇到了存在两个 dll 都有相同的命名空间,而且有相同的类的时候,如何同时使用这两个 dll 的类。 这里有两个库 Jall…

4.4SQL注入之布尔盲注

SQL注入之布尔盲注1.什么是布尔盲注? Web的页面的仅仅会返回True和False。那么布尔盲注就是进行SQL注入之后然后根据页面返回的True或者是False来得到数据库中的相关信息。 返回False时: 返回True时: 2.如何进行布尔盲注? 注入…

把空格对应的表头拼接起来

某Excel表格有表头,部分数据格为空。 ABCDEF1stat Astat Bstat Cstat Dstat Estat F2113XX4XXXX56XXX7XXXX8XX 要求处理每行,把空数据格对应的表头用斜线拼起来。 H1Summary2stat B/stat C/stat E/stat F/3stat C/stat D/stat F/4stat B/stat E/5stat…

冒泡排序及qsort函数

文章目录 前言一、冒泡排序二、qsort函数 前言 冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复进行的,直到没有再需要交换的元素&#xff…

软考证书补贴动不动就好几万,真的能领到吗?

取得软考证书在许多地区都有补贴政策,从几千至二十几万元不等。有些考生会好奇这些补贴是真的能领到吗,为此,小希搜集了一些例子证明是可以领到的,供大家参考。 1、奖励名单里的软考证书 在一些地区公示的奖励名单里,…

SpringBoot使用入门

springboot基础 1. 项目创建(1) idea自动创建(2) 手动创建①创建普通maven项目② 引入springboot依赖 2. 配置文件使用(1) 配置文件格式(2) 配置文件书写(3) 值的获取 3. bean的管理(1) bean的扫描(2) bean的注册Bean注解Import注解 自定义组合注解减少配置类注解(3) 条件注册b…

vue3-scroll-seamless 大屏无缝滚动

npm install vue3-scroll-seamless --save //或者 yarn add vue3-scroll-seamless页面中引入 <template><div class"safety_item"><SoftwareHead title"高危及以上组件漏洞TOP10"></SoftwareHead><div class"table"…

python学习12:对txt/text类型的文件进行读写

1.对txt类型的文件进行读写 1&#xff09;对text文件的操作 打开文件-读/写文件-关闭文件 1.1)打开文件 open() 1.2)读/写文件 读: read(),readline(),rendlines() 写:write() 1.3)关闭文件 close() # 案例1:(读):moder # filename test004.txt # 同一个文件夹 filename rD:…

Unity之获取Avpro视频画面并在本地创建缩略图

一、效果 功能需求&#xff1a;获取StreamingAssets文件夹下的所有视频&#xff08;包含其子文件夹&#xff09;&#xff0c;获取指定时间的视频画面&#xff0c;然后将图片保存到本地磁盘中。 二、关于Avpro的事件监听 当指定视频时间进度时会触发FinishedSeeking&#xff0c…

[论文笔记]RAFT: Adapting Language Model to Domain Specific RAG

引言 今天带来一篇结合RAG和微调的论文&#xff1a;RAFT: Adapting Language Model to Domain Specific RAG。 为了简单&#xff0c;下文中以翻译的口吻记录&#xff0c;比如替换"作者"为"我们"。 本文介绍了检索增强微调(Retrieval Augmented Fine Tunin…

CNN-LSTM用于时间序列预测,发二区5分+没问题!

为了进一步提高时序预测的性能&#xff0c;研究者们组合了CNN和LSTM的特点&#xff0c;提出了CNN-LSTM混合架构。 这种架构因为独特的结构设计&#xff0c;能同时处理时空数据、提取丰富的特征、并有效解决过拟合问题&#xff0c;实现对时间序列数据的高效、准确预测&#xff…

跨平台RTSP播放器之VLC Media Player还是SmartPlayer?

好多开发者纠结&#xff0c;RTSP流播放&#xff0c;到底是用开源的VLC Media Player还是大牛直播SDK的SmartPlayer&#xff1f;针对此&#xff0c;本文做个简单的技术探讨&#xff0c;方便开发者根据实际需要&#xff0c;做适合自己场景的选择&#xff1a; VLC Media Player …

oracle 数据库 day0823

ok了家人们&#xff0c;今天学习了orcle的基本用法&#xff0c;一日不见&#xff0c;如隔三秋啊&#xff0c; 一.多表联合查询 和之前学习的MySQL数据库一样的用法&#xff0c; 1.1 笛卡尔积查询 SELECT * FROM A表,B表 查询员工表和部门表 select * from emp e, dept d; e…

虚拟系统VS

定义 虚拟系统VS&#xff08;Virtual System&#xff09;是指将一台物理设备PS&#xff08;Physical System&#xff09;虚拟成多个相互隔离的逻辑系统。每个VS独立工作&#xff0c;在业务功能上等同于一台独立的传统物理设备&#xff0c;如图2-1所示。 目的 随着网络规模的不…

PNAS亮点文章!浙江大学/东北林业大学/深圳华大生命科学研究院等联合揭示大熊猫种群演化历史,提出物种保护新见解!

本文首发于“生态学者”微信公众号&#xff01;作者投稿系列 全新世以来&#xff0c;尤其是工业革命以来&#xff0c;资源的过度开发利用和环境污染等人类活动&#xff0c;导致野生动物栖息地严重破碎化&#xff0c;甚至丧失&#xff0c;形成了大量隔离小种群&#xff0c;致使…

TESSY导入导出测试用例

TESSY支持测试用例的导入和导出&#xff0c;下面我们以tessy5.1为例&#xff0c;给大家展示。 1、导入测试用例 因为导入测试用例&#xff0c;需要先创建测试集&#xff0c;这部分不熟悉的&#xff0c;可以参考一下&#xff1a; https://blog.csdn.net/u012568663/article/det…

网络编程(学习)2024.8.30

目录 IO多路复用 select、poll、epoll IO多路复用机制 一.select 1.函数 2.流程 3.案例使用select创建全双工客户端 4.并发服务器 5.案例使用select创建全双工服务端 二.poll 1.函数 2.流程 3.案例使用poll创建全双工客户端 4.案例使用poll创建全双工服务端 三、…