SmartPing

机器互 Ping 检测工具
授权协议 apache
开发语言 Google Go
所属分类 管理和监控、 DevOps/运维工具
软件类型 开源软件
地区 国产
投 递 者 和季
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

SmartPing

SmartPing为一个各机器(点)间间互PING检测工具,支持互PING,单向PING,绘制拓扑及报警功能。

功能

  • 单向PING,反向Ping绘图
  • 互PING间机器的状态拓扑
  • 自定义延迟、丢包阈值报警

设计思路

本系统设计为无中心化原则,所有的数据均存储自身点中,默认每个Ping目标点的数据循环保留1个月时间,由自身点的数据绘制 出PING包 的状态,由各其他点的数据绘制 进PING包 的状态,从任意一点查询数据均会通过Ajax请求关联点的API接口获取其他点数据组装全部数据,绘制 出Ping曲线图,进Ping曲线图,网络互Ping拓扑图。并可以设置阈值进行报警,方便对网络质量的监控。

项目截图

app-bg.jpg

 

去中心化设计

去中心化设计是SmartPing的一大特点,这里的去中心化并非集群概念,而是与分布式更加接近,简单点理解及数据分布式存储,各节点通过互相调用保持数据展示的统一性。

实例

如在我们的网络中存在三个对等节点A,B,C;三个节点之间将产生3!(321)=6条交互数据,在SmartPing中,每个节点存储相同的配置数据(Conf),检测数据只存储目标为其他节点的数据,及A存储 A->B|A->C , B存储B->C|B-A,C存储C->A|C->B的数据, 当用户访问任意一个节点时,用户在前端进行各节点的数据汇总使各节点的数据展示在前端上保持一致。

 

数据结构

SmartPing采用Sqlite进行数据存储,且数据结构非常简单,项目中的database-base.db为一个空sqlite数据库,程序根据场景建立响应的数据存储表。

打开SmartPing的Sqlite数据库后可以看到,SmartPing共两种类型数据表

  • pinglog-{IP}
  • alertlog-{date}

pinglog-{IP}

pinglog数据表根据用户所设置的检测机器生成,数据表logtime设置为唯一主键,存储日-小时-分(例如:[16 18:20]16号18点20分)数据,PING检测数据通过Replace Into形式写入保证循环存储1个月的数据,保证单表最大数据量为1440*31=44640条,当用户去除响应节点检测时自动删除。

CREATE TABLE [pinglog-{IP}] (
    logtime   VARCHAR (8),
    maxdelay  VARCHAR (3),
    mindelay  VARCHAR (3),
    avgdelay  VARCHAR (3),
    sendpk    VARCHAR (2),
    revcpk    VARCHAR (2),
    losspk    VARCHAR (3),
    lastcheck VARCHAR (16),
    PRIMARY KEY (
        logtime
    )
);
CREATE INDEX "lc" ON [pinglog-{IP}] (
        lastcheck
);

alertlog-{date}

alertlog-{date}数据表根据用户设置的保留报警日志时常进行按日分表并定期清理

CREATE TABLE [alertlog-20170916] (
    logtime   VARCHAR (8),
    fromname  VARCHAR (15),
    toname    VARCHAR (15),
    alerttype INT (1) 
);

 

其他资料

  • 官网:http://smartping.org/ 下载安装 二进制安装 选择相应OS的二进制包(最新版本v0.5.0) Linux: Github 百度云(提取码:gbcg) Windows:Github 百度云(提取码:gbcg) All Release:Github 百度云(提取码:gbcg) 解压并运行程序 解压压缩包。 使用命令(Windows使用CMD) cd 进入到刚刚创建的目录。 执

 相关资料
  • 介绍 ping的工作原理很简单,一台网络设备发送请求等待另一网络设备的回复,并记录下发送时间。接收到回复之后,就可以计算报文传输时间了。只要接收到回复就表示连接是正常的。耗费的时间喻示了路径长度。重复请求响应的一致性也表明了连接质量的可靠性。因此,ping回答了两个基本的问题:是否有连接?连接的质量如何?本文主要讨论这两个问题。 更多信息 正常的ping操作主要是两个特定的ICMP消息,ECHO_

  • 我有2个EC2 Ubuntu实例。它们共享相同的VPC、子网和安全组。实例的防火墙已关闭。但我仍然无法通过私有IP彼此ping。如何允许这些实例彼此ping?

  • 问题内容: 我正在尝试创建一个可以定时调用的函数,以检查ping是否良好并返回结果,以便更新屏幕显示。我是python的新手,所以我不完全了解如何在函数中返回值或设置变量。 这是我的代码有效: 这是我创建函数的尝试: 这是我的显示方式: 所以我要寻找的是如何从函数返回pingstatus。任何帮助将不胜感激。 问题答案: 看起来您想要关键字 您需要使用类似以下内容的变量来捕获/“接收”函数的返回值

  • 本文向大家介绍Python实现检测服务器是否可以ping通的2种方法,包括了Python实现检测服务器是否可以ping通的2种方法的使用技巧和注意事项,需要的朋友参考一下 好想在2014结束前再赶出个10篇博文来,~(>_<)~,不写博客真不是一个好兆头,至少说明对学习的欲望和对知识的研究都不是那么积极了,如果说这1天的时间我能赶出几篇精致的博文,你们信不信,哈哈,反正我是信了。。。 python

  • 问题内容: 我在Mac上创建了一个Ubuntu Docker容器 我将端口设置为123。 我的容器IP是 在Mac上,我尝试ping我的容器, ,我收到icmp_seq 0的请求超时…。 我该怎么办?因此,我的本地计算机可以ping通我安装的容器。我是否在容器(这是一个普通的ubuntu系统)上缺少一些应用程序安装? 问题答案: 您不能直接使用Docker for Mac ping或访问容器接口

  • 问题内容: 我将扮演一个恶魔的拥护者片刻。我一直想知道为什么将浏览器检测(而不是功能检测)视为一种不好的做法。如果我测试某个浏览器的某个版本并确认该功能以某种可预测的方式运行,则可以决定对其进行特殊处理。这样做的理由是将来会万无一失,因为此部分浏览器版本不会更改。另一方面,如果我检测到DOM元素具有函数X,则不一定表示: 此功能在所有浏览器中的工作方式相同,并且 更重要的是,即使在所有未来的浏览器