以前一直用那个gui ping monitor,但是有些问题。

1,个人有点恶心外语

2,他这个行间距有点大,ip多了找起来麻烦

3,当IP多了,记住每个ip是哪个机器挺困难的,特别是有时候临时添加的测试ip,事后根本不知道是干嘛用的

4,不支持ipv6地址

5,每次打开软件,里面的目标都会倒序,这应该是bug

 

所以前段时间找了许久,并没找到很顺手的工具,要么是商业软件破解版,用两天就又提醒要钱,要么功能与预期相差太远。

所以动手自己干了

支持v4/v6地址,支持域名解析到v4/v6地址,支持写个备注

节点管理就用简单的json,因为绝大多数情况也就几十个目标足够了,再多也没什么差别。发包用的系统api,所以程序写死了是64位,也就没法编译成32位,现在这环境,也没那个必要了。

功能方面其实没什么难度的,就这么简单的东西,大部分人半天时间就可以手搓一个出来。

我遇到的难点是界面部分,我这人美感挺差的。。。

delphi 12原生的那个listview在10列,超过20行左右的情况下就开始闪烁,还有点频繁,因为设定的是每秒发一次,然后回调更新界面,并不是全部刷新,所以我也挺困惑的。已经试着把更新代码放在主进程队列里了,没用,所以用了开源的一个报表控件,效果还不错。

但是蛋碎的也在于此。。。

因为这个控件过于强大,是从底层开始自己构建的,许多事件和逻辑脉络与原生的不一样,我反反复复写了好几遍,还要摸清楚他的逻辑和用法,最后发现很多事情都可以很简单实现,但也有些事情我整了一天都没弄好。。。

 

目前我知道的小毛病是有时候添加目标的时候会报错,也懒得去琢磨了,还有删除并不是很方便,放在右键菜单了,原打算在后面增加一列,动态画个按钮出来,结果deepseek陪着我折腾了一整天都没弄好,甚至主界面的信息全都没了,放弃了。。。不过这玩意删除和添加的频率很低,应该不影响。。。

还有就是如果一个主机名只解析到v6地址而没有v4地址的话,无法添加,但有时候又可以。。。原因未知,我大概可以确定代码没毛病,ai也告诉我没毛病,给我郁闷坏了。。。

如果一个主机名同时解析到v4和v6,则v4优先使用。

再有就是用upx压缩了,所以启动稍慢,大概半秒。

在2008 R2和win10测试过,应该从win7以来的所有版本都能用了

 

=====================================

 

又努力了一下,用原生控件解决了闪烁的问题,解决了字体颜色,也在最后一列画了个删除,算是挺完美了:

同时确认了一下,如果一个域名只解析到v6地址是没问题的,之前测试出错是我把主机名记错了,所以总是解析失败,卧槽   -_-!

 

===================================

画了个浮动图表,可以看一下最近100次延迟情况,看着还可以,就是缺少美术细胞,总感觉差点意思:

 

基本上,想要的完工了,假期也要结束了,后面有可能增加组管理,有空再说了

 

=====================

开市前最后一次更新了,增加了组管理和动态图的开关,这样看起来就好很多了。

刚才干了一票黄金现货,那个账户翻了5倍,已收割。然后空的美元还在持单,已护住成本,看运气了,呵呵。

 

=============================

2025.05.06

调整为最近5分钟的动态图

其实早先就已经做好了生成html的代码,但是又有其他想法是打算做一个后台线程,定期生成html,然后发布到一个ftp地址去,这样就可以手机或者其他设备知道动态了。

但是有其他考虑,所以暂时还没把这个功能呈现。有点纠结,是把结果入库然后web呈现,还是直接在这里生成html?以后再想吧,喝酒了,歇会先

 

==============================

2025.05.12

原先的称为单机版,修了所有bug,微调了列的顺序,以后应该不会再更新了,作为单机版工具,也玩不出什么花样了。每目标一个线程,单机版也没打算对付超过5000节点的情况。

单机版的线程数量,个人感觉还好啦,我数了一下,微信电脑版都超过200线程,好几百M内存,相比之下,我这不到7M内存的工具多开几个线程,洒洒水了。。。

 

周末新建了个工程,称为分布式版,核心方面做的是工作线程+完成端口+异步回调+任务队列+匿名线程+主进程队列等,花哨的东西都整起,效果还是不错的,整个程序完全无阻塞,目标列表也从主控动态获取,统计总数据和每分钟数据,然后周期性把数据更新到主控去。如果网络异常或者提交失败,则由任务队列在后台慢慢尝试,不影响其他工作。而目标主机的启用与否也可以动态传递给各成员服务器节点。

后面再搞个web界面的展示,那种监控服务器在线率的业务,大概就是这么一套东西了,呵呵。

记录一个很奇葩的问题,而这个问题在单机版不存在。如果分布式版在运行途中把机器的ipv6协议禁用或者把v6地址删掉,并且现有目标里面包含v6地址,则程序的句柄数会快速跃升。虽然按这个现象和程序逻辑推测应该很容易解决,但我排查了好久都没搞定……放弃了,这个现象在服务器环境本身不应该存在的……

作者 听涛

《做了个ping/icmp监控工具》有2条评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注