Giter VIP home page Giter VIP logo

smartping's Introduction

SmartPing | 开源、高效、便捷的网络质量监控神器

      一个综合性网络质量(PING)检测工具,支持正/反向PING绘图、互PING拓扑绘图与报警、全国PING延迟地图与在线检测工具等功能
-- Browse website --

功能

  • 正向PING,反向Ping绘图
  • 互PING间机器的状态拓扑,自定义延迟、丢包阈值报警(声音报警与邮件报警),报警时MTR检测
  • 全国PING延迟地图(各省份可分电信、联通、移动三条线路)
  • 检测工具,支持使用SmartPing各节点进行网络相关检测

设计思路

本系统的定位为轻量级工具,即使组多点成互Ping网络可以遵守无中心化原则,所有的数据均存储自身节点中,每个节点提供出方向的数据,从任意节点查询数据均会通过Ajax请求关联节点的API接口获取并组装全部数据。

项目截图

app-bg.jpg

技术交流

SmartPing

项目贡献

欢迎参与项目贡献!比如提交PR修复一个bug,或者新建 Issue 讨论新特性或者变更。

其他资料

smartping's People

Contributors

cornbear avatar ganhualin avatar imtms avatar llleon avatar pengzhxyz avatar toryzen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

smartping's Issues

对服务端口设置iptables的问题

由于个人使用,服务端口8899我想仅对部分IP开放访问权限,即:iptables内仅允许互为CS节点的IP访问8899这个端口,iptables写上去,拓扑页面的agent list就提示本机异常。

我竟然没有配通

我的场景是这样的
1 A机器10.1.0.1和B机器10.2.0.1在同一个内网环境,可以互ping通, 但都不能访问外网;
2 A启动smartping , agentip: 10.1.0.1 ; agentlist :本机10.1.0.1 CS, B 机器 10.2.0.1 ,CS
B启动smartping, agentip: 10.2.0.1 ; agentlist :本机10.2.0.1 CS, A机器 10.1.0.1 ,CS
3 现象是拓扑中,本机是绿色, 一条绿线指向对方,对方是红色
请问对方为什么是红色呢?

期待回复

内存泄露

你好,这个程序在长时间运行时,内存会不断的增加,存在内存泄露。问题出现数据往数据库写入时stmt没有关闭。

Reverse ping 没有数据

你好,我每个节点都部署为 CS TYPE, Topology 和 Forward ping 是正常的,但 Reverse ping 没有数据,另外 api 接口的 ping.json 数据返回都为0
{"avgdelay":["0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0"],"lastcheck":["2017-09-19 08:58","2017-09-19 08:59","2017-09-19 09:00","2017-09-19 09:01","2017-09-19 09:02","2017-09-19 09:03","2017-09-19 09:04","2017-09-19 09:05","2017-09-19 09:06","2017-09-19 09:07","2017-09-19 09:08","2017-09-19 09:09","2017-09-19 09:10","2017-09-19 09:11","2017-09-19 09:12","2017-09-19 09:13","2017-09-19 09:14","2017-09-19 09:15","2017-09-19 09:16","2017-09-19 09:17","2017-09-19 09:18","2017-09-19 09:19","2017-09-19 09:20","2017-09-19 09:21","2017-09-19 09:22","2017-09-19 09:23","2017-09-19 09:24","2017-09-19 09:25","2017-09-19 09:26","2017-09-19 09:27","2017-09-19 09:28","2017-09-19 09:29","2017-09-19 09:30","2017-09-19 09:31","2017-09-19 09:32","2017-09-19 09:33","2017-09-19 09:34","2017-09-19 09:35","2017-09-19 09:36","2017-09-19 09:37","2017-09-19 09:38","2017-09-19 09:39","2017-09-19 09:40","2017-09-19 09:41","2017-09-19 09:42","2017-09-19 09:43","2017-09-19 09:44","2017-09-19 09:45","2017-09-19 09:46","2017-09-19 09:47","2017-09-19 09:48","2017-09-19 09:49","2017-09-19 09:50","2017-09-19 09:51","2017-09-19 09:52","2017-09-19 09:53","2017-09-19 09:54","2017-09-19 09:55","2017-09-19 09:56","2017-09-19 09:57","2017-09-19 09:58","2017-09-19 09:59","2017-09-19 10:00","2017-09-19 10:01","2017-09-19 10:02","2017-09-19 10:03","2017-09-19 10:04","2017-09-19 10:05","2017-09-19 10:06","2017-09-19 10:07","2017-09-19 10:08","2017-09-19 10:09","2017-09-19 10:10","2017-09-19 10:11","2017-09-19 10:12","2017-09-19 10:13","2017-09-19 10:14","2017-09-19 10:15","2017-09-19 10:16","2017-09-19 10:17","2017-09-19 10:18","2017-09-19 10:19","2017-09-19 10:20","2017-09-19 10:21","2017-09-19 10:22","2017-09-19 10:23","2017-09-19 10:24","2017-09-19 10:25","2017-09-19 10:26","2017-09-19 10:27","2017-09-19 10:28","2017-09-19 10:29","2017-09-19 10:30","2017-09-19 10:31","2017-09-19 10:32","2017-09-19 10:33","2017-09-19 10:34","2017-09-19 10:35","2017-09-19 10:36","2017-09-19 10:37","2017-09-19 10:38","2017-09-19 10:39","2017-09-19 10:40","2017-09-19 10:41","2017-09-19 10:42","2017-09-19 10:43","2017-09-19 10:44","2017-09-19 10:45","2017-09-19 10:46","2017-09-19 10:47","2017-09-19 10:48","2017-09-19 10:49","2017-09-19 10:50","2017-09-19 10:51","2017-09-19 10:52","2017-09-19 10:53","2017-09-19 10:54","2017-09-19 10:55","2017-09-19 10:56","2017-09-19 10:57","2017-09-19 10:58"],"losspk":["0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0"],"maxdelay":["0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0"],"mindelay":["0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0"],"revcpk":["0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0"],"sendpk":["0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0"]}

严重问题

将tar 解压到 根目录下 整个系统都崩溃了 。

建议加入tcping

部分时候本机网络不可控,icmp包被丢弃,tcping可能适用性更好。

统计的不准确

我在系统上有ping的话,差不多有9到10几的丢包,但是smartping上显示0丢包,
配置用的sysping ,难道要用goping?

内网部署的问题

全国延迟的图看到的都是红色的,用检测工具菜单去 PING 延迟配置里面的 IP,丢包率 100% 。本地 shell 去 PING 延迟配置里面的 IP 是 OK 的。请问这是哪里的配置出了错。
谢谢。

提供默认全国IP

既然已经有了全国延迟测试功能,是否可以收集一批全国IP地址,让大家可以开箱即用?

能不能实现个mtr功能呢

感觉mtr功能会比traceroute好用,当报警时进行mtr绘制一个路由图,这样一看就知道在哪个点上丢的包。要是在增加个当IP丢包告警调用mtr命令绘制成一个路由图文本并发送到邮件就完美了啦。

关于告警alert的问题

我在公网找了10台机器部署 配置
"Type": "CS",
"Thdchecksec": 900,
"Thdoccnum": 1,
"Thdavgdelay": 120,
"Thdloss": 1
可我发现 alert 里面 一大堆 告警 信息, 而且告警信息,就显示 ,from 本机 to 远程 ,
这么多告警信息,是我本机网络有问题?

建议增加分组配置功能

可自定义分组,比如按地区或运营商将不同的节点划分开,相同组的节点做互测,一个节点可以属于多个组。

请问如何做一个web console的proxy

现在有服务器ABC,都只有INPUT的防火墙
情况:
A的8899不做任何限制,BC的8899仅允许A来访问
结果:
在A上访问localhost:8899一切正常,
但是通过别的机器D访问A:8899时,reserve ping和拓扑图都不能正常显示

请问该如何设置?

ping的频率的问题

cmd := exec.Command("ping", "-w", "5", "-c", cnt, Addr)
cnt 默认是 10
默认的linux ping的参数是:
ping -w 5 -c 10
因为 -w 超时是5 秒,ping的默认间隔是1秒一个包,这样只会每次发5个包,每次检测每分钟前5秒包质量
建议改为:
ping -w 60 -i 6 -c 10
这样每6秒发一次包,发10次,这样能检测每分钟的网络质量

拓扑中告警时效性太低

断开网卡后到拓扑中告警以及恢复网卡后到拓扑恢复告警时间间隔长,这个是否可以修改

如何更改数据默认的保留时长?

您好,想问一下如何将默认数据保存时间的1个月更改为想要的时间?比如我查看6个月的网络情况,如何修改?是否可以在配置文件中增加相应的控制项以便自定义保留时长?

另,目前界面展示是一行3个站点,如果上面说的,能够调整数据时长的话,假如保留的时长比较长,那么现有展示布局来展示图标就不太好看了,最好能够添加一个更改展示布局的功能或选线,比如能够切换成一行只显示1个站点

以上,是个人的一些建议和想法,谢谢

关于邮箱告警配置不成功

想问一下,邮箱告警有什么特别注意的吗 ?exchange邮箱是否可以?还是必须使用SMTP邮箱,测试QQ邮箱也没有成功呢,求知道,感谢🙏

Smartping 运行数十秒后自动停止

ubuntu@lax:~/smartping$ ./control run
2018-04-30/13:46:37 [Info] config.go Config loaded
2018-04-30/13:46:37 [Info] http.go [func:StartHttp] startin
to listen on 8899
2018-04-30/13:46:37 [Info] storage.go [func:CreatePingTable
CreateDB pinglog-127.0.0.1 Start..
2018-04-30/13:46:37 [Info] storage.go [func:CreatePingTable
CreateDB pinglog-127.0.0.1 Finish..
2018-04-30/13:46:37 [Info] storage.go [func:CreatePingTable
CreateDB pinglog-93.46.8.89 Start..
2018-04-30/13:46:37 [Info] storage.go [func:CreatePingTable
CreateDB pinglog-93.46.8.89 Finish..
2018-04-30/13:46:37 [Info] storage.go [func:CreatePingTable
CreateDB pinglog-220.181.57.217 Start..
2018-04-30/13:46:37 [Info] storage.go [func:CreatePingTable
CreateDB pinglog-220.181.57.217 Finish..
2018-04-30/13:46:37 [Info] storage.go [func:CreatePingTable
CreateDB pinglog-114.114.114.114 Start..
2018-04-30/13:46:37 [Info] storage.go [func:CreatePingTable
CreateDB pinglog-114.114.114.114 Finish..
panic: runtime error: invalid memory address or nil pointer
dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 p
=0x6b9176]

goroutine 71 [running]:
_/root/smartping_v0.5.0/src/nettools.(*pkg).Send(0xc42009bd
0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
/root/smartping_v0.5.0/src/nettools/icmp.go:41 +0xf
_/root/smartping_v0.5.0/src/nettools.RunPing(0xc4200e60e0,
xf, 0xb2d05e00, 0x40, 0x0, 0x8f76f9, 0x2, 0xc4201d06e0)
/root/smartping_v0.5.0/src/nettools/ping.go:28 +0x3
5
_/root/smartping_v0.5.0/src/funcs.StartPing(0xc4200e60da, 0
6, 0xc4200e60e0, 0xf, 0xc4200e60f0, 0x2, 0x1e, 0x3, 0xc8, 0
32, ...)
/root/smartping_v0.5.0/src/funcs/ping.go:20 +0x1d6
created by main.main.func1
/root/smartping_v0.5.0/src/smartping.go:37 +0x14b

路由的监控功能

我对服务器间的路由更感兴趣,ipip.net有一个besttrace4linux,用着感觉很好。
看路由可以更好地了解延迟波动的原因

Mac支持问题

func Ping(Addr string) PingSt {
	var rt PingSt
	switch os := runtime.GOOS; os {
	case "linux":
		rt = pingLinux(Addr)
	case "windows":
		rt = pingWindows(Addr)
	default:
		log.Fatalf("Unsupported OS type: %s.  Can't establish ping cmd args.\n", os)
	}
	return rt
}

缺少MACOS支持。因此任何 Go 语言 支持的平台都可以运行 SmartPing,包括 Windows、Mac、Linux 以及 ARM。这个说明可能会产生歧义。

panic: runtime error: invalid memory address or nil pointer dereference

hello ,I'm going to build that is ok.

smartping.exe -f ./config.json
but run in windows cmd return error:

2017/07/26 11:57:59 Opening config file: ./config.json
2017/07/26 11:57:59 Config loaded
2017/07/26 11:57:59 starting runPingTest 本机
2017/07/26 11:57:59 starting to listen on :8899
2017/07/26 11:57:59 starting runPingTest NOPING
2017/07/26 11:57:59 starting runPingTest IP_10_0_0_51
2017/07/26 11:57:59 starting runPingTest IP_10_0_15_1
2017/07/26 11:57:59 Get status on http://localhost:8899/status
2017/07/26 11:58:03 Addr:127.0.0.1 SendPk:5 RevcPk:0 LossPk:0 | MinDelay:0 AvgDelay:0 MaxDelay:0
2017/07/26 11:58:03 REPLACE INTO pinglog 26 11:58 127.0.0.1 本机 0 0 0 5 5 0 2017-07-26 11:58
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x0 pc=0x4d0f2d]

goroutine 20 [running]:
database/sql.(*Stmt).ExecContext(0x0, 0x97ef40, 0x119721a4, 0x11999eac, 0xa, 0xa, 0x0, 0x0, 0x0, 0x0)
C:/Go/src/database/sql/sql.go:1789 +0x3d
database/sql.(*Stmt).Exec(0x0, 0x11999eac, 0xa, 0xa, 0x97ce90, 0x11a5b070, 0x11a5b060, 0x8)
C:/Go/src/database/sql/sql.go:1814 +0x4d
smartping/src/funcs.runPingTest(0x11aa95c0, 0x756b63, 0x5, 0x11a5aae0, 0x9, 0x11a5aaf0, 0x9, 0x11aadda0, 0x20, 0x11aae870, ...)
D:/goworkpath/src/smartping/src/funcs/cron.go:28 +0x7ad
created by smartping/src/funcs.StartPing
D:/goworkpath/src/smartping/src/funcs/cron.go:13 +0x6b

Can i get some help for.?

建议自动获取本机IP,批量更新config.josn及其他建议

1、reverse ping
默认本机IP是127.0.0.1,Agent Name是localhost.localdomain,如果有大量机器需要部署实现反向ping,就需要一台台修改 IP为机器IP,这样部署起来不是很方便。
2、config.josn配置文件更新
如果有新机器添加到机器列表,如果想要实现其他机器对这个新加机器的互ping,其他机器的配置也需要进行修改,如果是一台台去修改,非常耗费时间。
3、配置加载不能热加载
手动替换配置文件之后不支持热加载,必须要重启配置可以生效。
4、windows启动命令不能后台运行
在windows命令窗口启动之后,如果关闭窗口,程序便会停止,希望支持后台运行。这个是比较容易实现的。

boltdb分支 数据查询的起止时间跨[月]时数据出错

使用boltdb的分支(task和boltdb),调用/api/ping.json的起始日期和结束日期跨越[月]单位时,返回数据会出现异常。
例如starttime=2018-12-31 23:59&endtime=2019-01-08 00:00。此时返回的json内avgdelay,losspk,maxdelay,mindelay数据全为0,只有lastcheck有正常日期。但starttime=2019-01-01 00:00结束日期不变时,返回数据则正常。日志没有报错

使用sqlite的分支没有这问题。不过sqlite分支ping目标增多后查询经常卡死,因此弃用
订正:跨[月]单位即出错

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.