使用SmokePing监控你的服务器

介绍

SmokePing是一款监控网络状态和稳定性的开源软件(它是rrdtool的作者开发的),通过它可以监控到公司IDC的网络状况,如延时,丢包率,是否BGP多线等;smokeping会向目标设备和系统发送各种类型的测试数据包,测量、记录,并通过rrdtool制图方式,图形化地展示网络的时延情况,进而能够清楚的判断出网络的即时通信情况;

通过smokeping来监控IDC机房网络质量情况,可以从监控图上的延时与丢包情况分辨出机房的网络是否稳定,是否为多线,是否为BGP机房以及到各城市的三个运行商网络各是什么情况。如果出现问题,可以有针对性的去处理;如果选择新机房的时候,还可以根据smokeping的监控结果来判断这个机房是否适合。需要注意的是:smokeping监控的是网络稳定性,而cacti或zabbix监控的是带宽使用情况(即进出口流量)SpokePing的创建者Tobias Oetiker还创建了一个名为RDDtool的数据记录和时间序列图形实用程序。SmokePing使用RDDtool,因此您也可以访问其复杂的图形功能。

本教程将向您展示如何在FreeBSD上使用Apache安装和配置SmokePing。

前期准备

要学习本教程,您需要:

  • 一个具有root用户的FreeBSD 11服务器。没有服务器的同学可以在这个页面购买。我建议您免费试用腾讯云开发者实验室体验腾讯云的CVM系统

第1步 - 使用FastCGI Support安装Apache

首先,我们将安装Apache Web服务器及其FastCGI模块,SmokePing使用该模块为其Web界面提供支持。

首先,更新服务器的存储库信息。

sudo pkg update

要安装有FastCGI支持的Apache,您可以用pkg安装FastCGI模块。pkg将处理FastCGI模块本身所需的所有必须项,因此它也将自动安装主Apache包。

sudo pkg install ap24-mod_fcgid

按下Y确认安装。安装Apache后,我们需要对其设置以使其正常工作。

第2步 - 配置Apache

我们需要对Apache进行两项更改:在httpd.conf更新一些服务器信息并启用FastCGI模块。

首先,打开/usr/local/etc/apache24/httpd.conf进行编辑。

sudo ee /usr/local/etc/apache24/httpd.conf

编辑下面的两个指令。设置ServerAdmin为您的电子邮件地址,并取消注释(通过删除前面#)并编辑您服务器的IP地址为ServerName

. . .
# ServerAdmin: Your address, where problems with the server should be
# e-mailed.  This address appears on some server-generated pages, such
# as error documents.  e.g. admin@your-domain.com
#
ServerAdmin your_email_address
​
#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
ServerName your_server_ip
. . .

保存并关闭文件。

FastCGI不是默认模块,因此我们必须将其添加到Apache的配置中。要加载模块,我们需要在其中创建一个新的配置文件/usr/local/etc/apache24/modules.d/并添加模块信息。

Apache文档说明,如果一个文件名称以三位数字开头,后跟_并以.conf” 结尾。则Apache会自动包含该配置文件。为了符合这一点要求,我们将创建一个名为001_fcgid.conf的文件。

sudo ee /usr/local/etc/apache24/modules.d/001_fcgid.conf

将以下内容粘贴到文件中,告诉Apache加载模块以及在何处找到它。

LoadModule  fcgid_module            libexec/apache24/mod_fcgid.so

保存并关闭文件。现在Apache已经设置了FastCGI,我们可以安装SmokePing了。

第3步 - 安装和配置SmokePing

安装SmokePing很容易,因为它就位于包存储库中。

sudo pkg install smokeping

SmokePing的配置/usr/local/etc/smokeping/config是默认启用状态。您需要编辑此文件以自定义几个字段。

sudo ee /usr/local/etc/smokeping/config

您需要在General部分中编辑四个字段:

  • owner你的名字
  • contact你的电子邮件地址
  • imgurl修改您服务器的IP地址
  • cgiurl修改您服务器的IP地址

以下是配置后文件的样子:

*** General ***
​
owner    = your_name
contact  = your_email_address
mailhost = my.mail.host
. . .
imgcache = /usr/local/smokeping/htdocs/img
imgurl   = http://your_server_ip/smokeping/img
datadir  = /usr/local/var/smokeping
piddir  = /usr/local/var/smokeping
cgiurl   = http://your_server_ip/smokeping.fcgi
. . .

SmokePing支持主从架构,在本教程中,我们只在一台机器上设置SmokePing。因此,通过在每行前面添加***Slaves ***来标记配置的部分。

. . .
# *** Slaves ***
# secrets=/usr/local/etc/smokeping/smokeping_secrets
# +boomer
# display_name=boomer
# color=0000ff
#
# +slave2
# display_name=another
# color=00ff00
. . .

保持此文件处于打开状态,因为我们将在下一步中继续编辑它以设置SmokePing的目标。

第4步 - 定义目标

我们要添加到SmokePing配置文件的最后一件事是目标。为了解释SmokePing的注释内容,目标是主机的分层列表,用来标记系统应监控的网络连接的端点。每个目标都将指定使用哪种探测器,因为它将外部ping命令收集到SmokePing中(如fping)。

在本教程中,我们将设置一个配置来监视服务器和两个FreeBSD pkg镜像之间的延迟。我们将创建三个图形:两个显示两个镜像服务器中各个镜像服务器的延迟,另一个显示两个镜像服务器的延迟。

目标已在SmokePing配置文件的*** Targets***部分中。您可以使用变量来自定义目标,但在这里,我们只使用以下内容:

  • probe:用于探测延迟的ping命令。
  • menu:要在GUI中显示的默认菜单。
  • title:相应SmokePing页面的标题。
  • Remark:将出现在页面上的文本。
  • host:IP地址或主机名端点。

首先,删除现有的示例配置,以使文件末尾如下所示:

. . .
*** Targets ***
​
probe = FPing
​
menu = Top
title = Network Latency Grapher
remark = Welcome to the SmokePing website of xxx Company. \
         Here you will learn all about the latency of our network

然后,复制并粘贴以下配置。

. . .
*** Targets ***
​
probe = FPing
​
menu = Top
title = Network Latency Grapher
remark = Welcome to the SmokePing website of xxx Company. \
         Here you will learn all about the latency of our network
​
+ targets
menu = Targets
title = Targets' Latency Probed with fping
​
    ++ pkgmir_nyi
    menu = FreeBSD pkg Mirror (NYI)
    title = FreeBSD pkg Mirror Hosted by New York Internet, USA
    host = pkg0.nyi.freebsd.org
​
    ++ pkgmir_ydx
    menu = FreeBSD pkg Mirror (YDX)
    title = FreeBSD pkg Mirror Hosted by Yandex, Russia
    host = pkg0.ydx.freebsd.org

让我们了解一下这是做什么的。

在我们的配置中,+targets行意味着我们正在定义嵌套的目标级别。嵌套目标将固有其主配置的值,因此如果我们希望这些目标使用相同的探测器,则不需要再次包含probe = FPing行。但是,我们更新了新子部分的变量titlemenu变量,因此网站上的页面将具有不同的标题和菜单。

++ pkgmir_xxx行意味着我们正在定义第二个嵌套级别,其中包括两个目标。它们有一个端点地址的宿主变量,宿主是我们的两个FreeBSD 镜像服务器。以上配置将为每个目标创建一个图表。

. . .
    ++ pkgmir_ydx
    menu = FreeBSD pkg Mirror (YDX)
    title = FreeBSD pkg Mirror Hosted by Yandex, Russia
    host = pkg0.ydx.freebsd.org
​
+ multi
menu = Multi Targets
title = Multi Targets
​
    ++ multi_pkgmir
    menu = FreeBSD pkg Mirrors
    title = FreeBSD pkg Mirrors
    host = /targets/pkgmir_nyi /targets/pkgmir_ydx

请注意,此部分使用我们已配置的两个目标(/targets/pkgmir_nyi/targets/pkgmir_ydx)。

最后,保存并关闭文件。SmokePing的配置都已设置好,所以让我们连接Apache和SmokePing并启动相应的服务。

第5步 - 连接和启用服务

/usr/local/etc/apache24/Includes/被调用的Apache中创建配置文件smokeping.conf

sudo ee /usr/local/etc/apache24/Includes/smokeping.conf

在这里,我们将添加Apache处理SmokePing Web界面请求所需的信息。将以下内容复制并粘贴到新文件中:

ScriptAlias /smokeping.fcgi /usr/local/smokeping/htdocs/smokeping.fcgi
Alias       /smokeping      /usr/local/smokeping/htdocs/
<Directory "/usr/local/smokeping/htdocs/">
        AddHandler      fcgid-script .fcgi
        AllowOverride   None
        DirectoryIndex  index.html smokeping.fcgi
        Options         FollowSymLinks ExecCGI
        Require         all granted
</Directory>

这告诉Apache在哪里可以找到SmokePing的文件,并确保它使用的是FastCGI。

Apache和SmokePing的默认服务配置不会在引导时启动进程。要更改它的话,请执行以下两个命令。

sudo sysrc apache24_enable="YES"
sudo sysrc smokeping_enable="YES"

上述两个命令的输出应如下所示:

apache24_enable:  -> YES
smokeping_enable:  -> YES

现在,您可以启动Apache服务。

sudo service apache24 start

如果它成功启动,您将看到:

Performing sanity check on apache24 configuration:
Syntax OK
Starting apache24.

最后,启动SmokePing服务。

sudo service smokeping start
Starting smokeping.
Note: logging to syslog as local0/info.
Daemonizing /usr/local/bin/smokeping ...

一切都在运行,让我们看看我们的图表。

第6步 - 访问SmokePing的Web界面

您可以通过自己的浏览器输入http://your_server_ip/smokeping以访问SmokePing的Web界面。您将看到一个页面,其中包含您在步骤5中指定的标题和备注。默认它将如下所示:

您可以通过浏览左侧的菜单来查看图表。注意菜单中的TargetsMultiTargets选项; 这些是我们在步骤5中定义的目标。

单击目标。您将看到我们定义的前两个图,每个镜像服务器一个。在左侧,您将看到嵌套的目标列表,它反映了我们的配置文件。

接下来,单击Multi Targets。你会在这里看到整体数据图。

如果遇到问题,可以查看日志以获取诊断问题的帮助。Apache将其日志记录在两个文件中:/var/log/httpd-access.log/var/log/httpd-error.log。SmokePing有一个日志文件,即/var/log/smokeping.log。请记住,如果更改SmokePing的配置,则需要重新加载守护程序sudo service smokeping reload

结论

在本教程中,您学会了使用Apache设置SmokePing并创建一些示例来测试日志记录和图形。SmokePing还有许多其他功能,例如服务,发出警报和支持您自己的邮件服务器。您可以查看SmokePing的官方文档1️⃣了解更多详情。想学习更多Linux知识?请前往腾讯云+社区学习。


参考文献:《How To Track Network Latency with SmokePing on FreeBSD 11》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏QQ音乐前端团队专栏

Vue打包优化之code spliting

如果我们对所有的代码进行合理的拆分,将首屏和非首屏的代码进行剥离,将业务代码和基础库代码进行拆分,在需要某段代码的时候再加载它,下次若再需要用则从缓存中读取.....

564100
来自专栏机器学习和数学

[无聊的软件安装] 从零搭建深度学习环境简明教程

前方图片已沦陷,建议后台回复 环境 获取word版,下载到电脑上方便查看。 主要包括以下内容: 1. 安装Ubuntu 16.04 系统 2.安装Ubuntu系...

37090
来自专栏along的开发之旅

文加图, 理解Http请求与响应

在讲解OkHttp之前, 我们首先来个高清大图, 看下http请求的整个步骤, 有个整体概念.

11620
来自专栏Bug生活2048

Python优雅的操作Exchange邮箱——exchangelib模块使用介绍

需求很简单,只需要登录自己的Exchange邮箱,然后遍历所有邮件,有附件的就下载下来。

74920
来自专栏菩提树下的杨过

spring cloud: 使用consul来替换config server

上一篇提到了,eureka 2.x官方停止更新后,可以用consul来替代,如果采用consul的话,其实config server也没必要继续使用了,cons...

24230
来自专栏郭耀华‘s Blog

危化品速查APP--Android Project

开发环境 Android studio 2.3.1 功能描述 集成多种查询方式,查看本地数据库中危险化学品的信息; 按照中文拼音和英文首字母,对化学品进行查询;...

32470
来自专栏java思维导图

针对nginx,我们来具体聊聊正向代理与反向代理区别

所谓代理服务器就是位于发起请求的客户端与原始服务器端之间的一台跳板服务器,正向代理可以隐藏客户端,反向代理可以隐藏原始服务器。

14110
来自专栏阮一峰的网络日志

DNS 原理入门

DNS 是互联网核心协议之一。不管是上网浏览,还是编程开发,都需要了解一点它的知识。 本文详细介绍DNS的原理,以及如何运用工具软件观察它的运作。我的目标是,读...

58480
来自专栏趣谈编程

DNS原理入门

DNS 是互联网核心协议之一。不管是上网浏览,还是编程开发,都需要了解一点它的知识。

24800
来自专栏大内老A

谈谈分布式事务之二:基于DTC的分布式事务管理模型[上篇]

通过上一篇的介绍,我们知道了SOA真正需要的是一个能够协调服务操作直接(通过服务自身访问的资源)或者间接(通过被调用服务访问的资源)访问的所有资源的分布式事务管...

20670

扫码关注云+社区

领取腾讯云代金券