前些天在工作中,有个部门反应操作内部系统会卡顿和中断,持续时间也不会太久,这个时候不太好判断是网络的问题还是应用层的问题,看了下引用smokeping,可以多方面检测一下网络,看看问题出在哪里,计划是持续ping交换机,内部服务A,内部服务B,这样再出问题的时候就好判断是否是网络的问题。
什么是SmokePing
SmokePing 是一个开源的网络延迟监测工具,可以提供网络性能的可视化图表,监控网络延迟和丢包情况。它不仅可以实时监控网络状况,还可以保存历史数据用于分析。
SmokePing 解决的问题包括:
- 网络故障诊断:通过监控网络延迟和丢包,可以帮助我们识别网络问题,比如网络拥堵、设备故障等。
- 网络性能评估:通过分析网络延迟的长期变化,可以评估网络设备的性能,或者比较不同网络供应商的服务质量。
- 网络规划:通过分析网络的使用情况和性能,可以帮助我们进行网络规划,比如增加带宽、升级设备等。
- 服务质量保证:对于提供网络服务的公司,可以使用SmokePing来满足服务质量保证(SLA)的要求,比如监控网络的可用性和性能。
安装方面
在安装SmokePing之前,你需要确保已经安装了Apache HTTP服务器(httpd)。以下是安装步骤:
- 安装Apache HTTP服务器:在基于Debian的系统(如Ubuntu)中,你可以使用命令”sudo apt-get install apache2″来安装。在基于Red Hat的系统(如CentOS)中,你可以使用命令”sudo yum install httpd”来安装。
- 安装SmokePing:使用命令”sudo apt-get install smokeping”来安装。
- 配置SmokePing:编辑/etc/smokeping/config.d/目录下的配置文件。
- 启动SmokePing:使用命令”sudo /etc/init.d/smokeping start”来启动。
- 在浏览器中查看SmokePing:输入”http://your_server/smokeping”来查看。
配置文件方面
在SmokePing的配置文件中,你可以通过设置step和pings参数来控制ping的周期和次数。
step参数:这个参数定义了SmokePing每隔多少秒进行一次ping测试。例如,如果你想让SmokePing每隔300秒(5分钟)进行一次ping测试,你可以将step设置为300。这个参数通常在配置文件的Database部分设置。pings参数:这个参数定义了SmokePing在每次ping测试中发送多少个ping包。例如,如果你想让SmokePing在每次测试中发送20个ping包,你可以将pings设置为20。这个参数通常在配置文件的Probes部分设置。
这是一个示例配置:
*** Database *** step = 300 *** Probes *** + FPing binary = /usr/bin/fping pings = 20
在这个配置,SmokePing将每隔300秒进行一次ping测试,并且在每次测试中发送20个ping包。
你还可以通过修改Presentation部分来自定义显示的时间范围。例如,如果你想显示最近30分钟和60分钟的数据,你可以修改Presentation部分如下:
*** Presentation *** + overview width = 600 height = 50 range = 1800,3600
在这个配置中,range参数定义了显示的时间范围,单位是秒。1800表示30分钟,3600表示60分钟。
下面是我自己的完整的一个配置,你可以根据你的需求来进行调整:
*** General ***
owner = Super User
contact = root@localhost
mailhost = my.mail.host
sendmail = /usr/sbin/sendmail
# NOTE: do not put the Image Cache below cgi-bin
# since all files under cgi-bin will be executed ... this is not
# good for images.
imgcache = /var/lib/smokeping/images
imgurl = /smokeping/images
datadir = /var/lib/smokeping/rrd
piddir = /var/run/smokeping
cgiurl = http://localhost/smokeping/sm.cgi
smokemail = /etc/smokeping/smokemail
tmail = /etc/smokeping/tmail
# specify this to get syslog logging
syslogfacility = local0
# each probe is now run in its own process
# disable this to revert to the old behaviour
# concurrentprobes = no
*** Alerts ***
to = root@localhost
from = root@localhost
+someloss
type = loss
# in percent
pattern = >0%,*12*,>0%,*12*,>0%
comment = loss 3 times in a row
*** Database ***
step = 3
pings = 3
# consfn mrhb steps total
AVERAGE 0.5 1 1008
AVERAGE 0.5 12 4320
MIN 0.5 12 4320
MAX 0.5 12 4320
AVERAGE 0.5 144 720
MAX 0.5 144 720
MIN 0.5 144 720
*** Presentation ***
template = /etc/smokeping/basepage.html
+ charts
menu = Charts
title = The most interesting destinations
++ stddev
sorter = StdDev(entries=>4)
title = Top Standard Deviation
menu = Std Deviation
format = Standard Deviation %f
++ max
sorter = Max(entries=>5)
title = Top Max Roundtrip Time
menu = by Max
format = Max Roundtrip Time %f seconds
++ loss
sorter = Loss(entries=>5)
title = Top Packet Loss
menu = Loss
format = Packets Lost %f
++ median
sorter = Median(entries=>5)
title = Top Median Roundtrip Time
menu = by Median
format = Median RTT %f seconds
+ overview
width = 600
height = 50
range = 10h
+ detail
width = 600
height = 200
unison_tolerance = 2
"Last 30 Minutes" 30m
"Last 1 Hours" 1h
"Last 3 Hours" 3h
"Last 30 Hours" 30h
"Last 10 Days" 10d
"Last 30 Days" 30d
*** Probes ***
+ FPing
binary = /usr/sbin/fping
*** Slaves ***
secrets=/etc/smokeping/smokeping_secrets
+boomer
display_name=boomer
color=0000ff
+slave2
display_name=another
color=00ff00
*** Targets ***
probe = FPing
menu = Top
title = Network Test
remark = None</b>. \
+ Ping
menu = 主菜单的名字
title = 主菜单的抬头
++ 服务A
menu = 服务A的名字
title = 服务A抬头
host = 服务A的地址
++ 服务B
menu = 服务B的名字
title = 服务B的抬头
host = 服务B的地址
# 如果还有就照这个格式添加
你可以根据自己的需要调整这个频率,下面是一些配置好的截图

还可以点进去看每个节点的详情

这样下次再出现故障的时候,就知道是否网络有问题,方便定位到底是网络层还是应用层的问题