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

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.mzph.cn/web/51985.shtml

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

相关文章

计算机网络 第1章 概述

文章目录 计算机网络概念计算机网络的组成计算机网络的功能三种数据交换技术电路交换(Circuit Switching)报文交换(message)分组交换 三种交换方式性能对比计算机网络的分类计算机网络的性能指标性能指标1:速率性能指标…

【优化】Nginx 配置页面请求不走缓存 浏览器页面禁用缓存

【优化】Nginx 配置页面请求不走缓存 禁用缓存 目录 【优化】Nginx 配置页面请求不走缓存 禁用缓存 对所有请求禁用缓存 对特定location禁用缓存 注意事项 全局禁用缓存 要配置Nginx使其不缓存内容,通常是指禁止浏览器缓存响应的内容,或者是在代理…

单片机-串口通信(二)

目录 一、串口概念 1.相关概念: 按数据传输方式分类: 按时钟分类 二、STM32F103ZET6中串口 USART特性: NRZ数据格式: 三、配置串口通信 查看硬件原理图 软件配置流程 USART相关的寄存器 新建my_usart1.c和my_usart1.h …

将Google Chrome或Microsoft Edge浏览器的地址栏隐藏的方法

将Google Chrome或Microsoft Edge浏览器的地址栏隐藏的方法 目标效果示范 我们以百度首页为例,普通模式启动的页面通常会显示地址栏,如下图所示: 而本文要实现的效果是隐去地址栏和书签栏(如果有的话),无…

JDBC |封装JDBCUtils|PreparedStatement|事务|批处理|数据库连接池| Blob类型数据的读写|Apache—DBUtils简介

一.概述 在Java中,数据库存取技术可分为如下几类: JDBC直接访问数据库JDO技术(Java Data Object)第三方O/R工具,如Hibernate, Mybatis 等 JDBC是java访问数据库的基石,JDO, Hibernate等只是更好的封装了J…

交流耦合同相放大电路设计

1 简介 该电路在单电源供电时,可放大交流信号,并可对输出信号进行电平抬升,以使其集中于电源电压信号的二分之一处。 2 设计目标 2.1 输入 2.2 输出 2.3 电源 2.4 截止频率下限() 2.5 截止频率上限(&…

elementUI根据列表id进行列合并@莫成尘

本文章提供了elementUI根据列表id进行列合并的demo&#xff0c;效果如图&#xff08;可直接复制代码粘贴&#xff09; <template><div id"app"><el-table border :data"tableList" style"width: 100%" :span-method"objectS…

物联网之硬件元器件基础知识介绍、集成电路、电阻器、电容器、电感器、二极管、三极管、晶体管、连接器、传感器、开关、电源

MENU 前言电子元件采购网址三极管持续更新中 前言 序言 硬件元器件是电子设备和系统的基本构成部分&#xff0c;它们在电子产品的设计、制造和功能实现中起着至关重要的作用。 电阻器(Resistor) 功能&#xff1a;电阻器用于限制电流流过电路的流动&#xff0c;并分配电压。它们…

【数据结构】-----哈希

目录 一、哈希表概念 二、哈希函数 三、哈希冲突 Ⅰ、定义 Ⅱ、解决 ①闭散列--开放定址法 线性探测 二次线性探测 ②开散列--链地址法&#xff08;哈希桶&#xff09; 问题&#xff1a;哈希表何时扩容&#xff1f; 一、哈希表概念 哈希表又称散列表&#xff0c;它是一…

python网络爬虫(四)——实战练习

0.为什么要学习网络爬虫 深度学习一般过程:   收集数据&#xff0c;尤其是有标签、高质量的数据是一件昂贵的工作。   爬虫的过程&#xff0c;就是模仿浏览器的行为&#xff0c;往目标站点发送请求&#xff0c;接收服务器的响应数据&#xff0c;提取需要的信息&#xff0c…

【408DS算法题】034进阶-22年真题_判断顺序存储二叉树是否是BST

Index 真题题目分析实现总结 真题题目 已知非空二叉树T的结点值均为正整数&#xff0c;采用顺序存储方式保存&#xff0c;数据结构定义如下: typedef struct { // MAX_STZE为已定义常量int SqBiTNode[MAX_SIZE]; // 保存二叉树结点值的数组int ElemNum; …

Python简易IDE工作界面制作

、 休闲一下&#xff0c;学习编程还是要学习一些界面编程&#xff0c;能够根据需要制作图形操作界面&#xff0c;这样我们开发的程序才能方便操作和使用&#xff0c;同时获得更友好的人机交互体验。下面是一个用PyQt5制作的简易界面&#xff0c;供大学参考。如下图所示&a…

【淘宝采集项目经验分享】商品评论采集 |商品详情采集 |关键词搜索商品信息采集

商品评论采集 1、输入商品ID 2、筛选要抓取评论类型 3、填写要抓取的页数 4、立刻提交-启动测试 5、等爬虫结束后就可以到“爬取结果”里面下载数据 商品详情采集 1、输入商品ID 2、立刻提交-启动爬虫 3、等爬虫结束后就可以到“爬取结果”里面下载数据 taobao.item_…

【Python】Python 读取Excel、DataFrame对比并选出差异数据,重新写入Excel

背景&#xff1a;我在2个系统下载出了两个Excel&#xff0c;现在通过对下载的2个Excel数据&#xff0c;并选出差异数据 从新写入一个新的Excel中 differences_url rC:\Users\LENOVO\Downloads\differences.xlsx; //要生成的差异Excel的位置及名称 df1_url rC:\Users\LENOVO\Dow…

cocotb备忘录

按位给和int int后接的值&#xff0c;建议在32之内。大于32位建议按位给&#xff0c;因为int强制类型转换有范围 第二&#xff0c;低位给到低位&#xff0c;高位给到高位 # 将src_ip和dst_ip给到phv中,TMD以后只要报错在这个范围里面&#xff0c;TMD直接马上用手算一遍能不能…

【Qt】 QComboBox | QSpinBox

文章目录 QComboBox —— 下拉框QComboBox 属性核心方法核心信号QComboBox 使用 QSpinBox —— 微调框QSpinBox 属性核心信号QSpinBox 使用 QComboBox —— 下拉框 QComboBox 属性 QComboBox —— 表示下拉框 currentText ——当前选中的文本 currentindex ——当前选中的条…

如何在虚拟机中安装部署K8S?

教程参考&#xff1a;centos7安装k8s 1.28版本&#xff0c;基于科学-CSDN博客 环境准备&#xff1a; 准备三台机器&#xff0c;都做以下操作&#xff0c;或者只准备一个机器&#xff0c;最后再克隆两台。 yum&#xff1a; 换源&#xff0c;这是阿里云的源 sudo wget -O /etc…

详解Asp.Net Core管道模型中的五种过滤器的适用场景与用法

1. 前言 在 ASP.NET Core 中&#xff0c;过滤器是一种用于对请求管道进行前置或后置处理的组件。它们可以在请求处理的不同阶段干预和修改请求和响应&#xff0c;以实现一些通用的处理逻辑或功能增强。 ASP.NET Core 的管道模型由多个中间件组成&#xff0c;而过滤器是这个模…

kafka及异步通知文章上下架

1)自媒体文章上下架 需求分析 2)kafka概述 消息中间件对比 特 性 ActiveMQ RabbitMQ RocketMQ Kafka 开 发 语 言 java erlang java scala 单 机 吞 吐 量 万级 万级 10万级 100万级 时 效 性 ms us ms ms级以内 可 用 性 高&#xff08;主从&#xff0…

如何从 Bak 文件中恢复 SQL数据库?(3种方法)

如何从 .bak 文件恢复 SQL数据库&#xff1f; 在数据库管理和维护过程中&#xff0c;数据的安全性和完整性至关重要。备份文件&#xff08;.bak 文件&#xff09;是 SQL Server 中常用的数据库备份格式&#xff0c;它包含了数据库的完整副本&#xff0c;用于在数据丢失、系统故…