• Get In Touch
October 20, 2016

Install and Configure Smokeping on Ubuntu-14.04

Want your very own server? Get our 1GB memory, Xeon V4, 25GB SSD VPS for £10.00 / month.
Get a Cloud Server

Introduction

Smokeping is an opensource deluxe latency measurement tool that can be used to measure, store and display latency, latency distribution and packet loss. Using smokeping you can easily keep track of your network with latency monitoring. Smokeping allows you to maintain a longterm data-store and generate statistical charts based on RRDtool’s output.
In this tutorial, we will learn how to install and configure Smokeping on Ubuntu 14.04.

Requirements

  • A server runing Ubuntu-14.04.
  • A non-root user with sudo privileges setup on your server.

Install Smokeping

Before installing smokeping, you will need to install the Nginx web server with fcgiwrap and sendmail as its prerequisites.

You can install all this package by running the following command:

sudo apt-get install nginx sendmail fcgiwrap

Output:

     * Starting Mail Transport Agent (MTA) sendmail                                                                                                      ^[[B^[[B^[[B                                                                                                                                  [ OK ]
    Setting up libfcgi0ldbl (2.4.0-8.1ubuntu5) ...
    Setting up spawn-fcgi (1.6.3-1) ...
    update-alternatives: using /usr/bin/spawn-fcgi.standalone to provide /usr/bin/spawn-fcgi (spawn-fcgi) in auto mode
    update-alternatives: warning: not replacing /usr/share/man/man1/spawn-fcgi.1.gz with a link
    Setting up fcgiwrap (1.1.0-2) ...
     * Starting FastCGI wrapper fcgiwrap                                                                                                          [ OK ] 
    Setting up nginx-common (1.4.6-1ubuntu3.5) ...
    Setting up nginx-core (1.4.6-1ubuntu3.5) ...
    Setting up nginx (1.4.6-1ubuntu3.5) ...
    Setting up procmail (3.22-21ubuntu0.1) ...
    Processing triggers for ureadahead (0.100.0-16) ...
    Setting up sensible-mda (8.14.4-4.1ubuntu1) ...
    Setting up sendmail (8.14.4-4.1ubuntu1) ...
    Processing triggers for libc-bin (2.19-0ubuntu6) ...

Once installation is complete, start Nginx service and enable it to start at boot with the following command:

sudo /etc/init.d/nginx start
sudo update-rc.d nginx defaults

You should see the following output:

     Adding system startup for /etc/init.d/nginx ...
       /etc/rc0.d/K20nginx -> ../init.d/nginx
       /etc/rc1.d/K20nginx -> ../init.d/nginx
       /etc/rc6.d/K20nginx -> ../init.d/nginx
       /etc/rc2.d/S20nginx -> ../init.d/nginx
       /etc/rc3.d/S20nginx -> ../init.d/nginx
       /etc/rc4.d/S20nginx -> ../init.d/nginx
       /etc/rc5.d/S20nginx -> ../init.d/nginx

Now, you can install smokeping with the following command:

sudo apt-get install smokeping

Output:

    Selecting previously unselected package smokeping.
    Preparing to unpack .../smokeping_2.6.8-2+deb7u1ubuntu0.14.04.1_all.deb ...
    Unpacking smokeping (2.6.8-2+deb7u1ubuntu0.14.04.1) ...
    Processing triggers for man-db (2.6.7.1-1) ...
    Processing triggers for doc-base (0.10.5) ...
    Processing 1 added doc-base file...
    Registering documents with scrollkeeper...
    Processing triggers for ureadahead (0.100.0-16) ...
    ureadahead will be reprofiled on next reboot
    Setting up libperl5.18 (5.18.2-2ubuntu1.1) ...
    Setting up echoping (6.0.2-7) ...
    Setting up fping (3.8-1) ...
    Setting up javascript-common (11) ...
    Setting up libjs-prototype (1.7.1-3) ...
    Setting up libjs-scriptaculous (1.9.0-2) ...
    Setting up libjs-cropper (1.2.2-1) ...
    Setting up perl-modules (5.18.2-2ubuntu1.1) ...
    Setting up perl (5.18.2-2ubuntu1.1) ...
    Setting up libconfig-grammar-perl (1.10-1) ...
    Setting up libfcgi-perl (0.74-1build2) ...
    Setting up libcgi-fast-perl (5.18.2-2ubuntu1.1) ...
    Setting up librrds-perl (1.4.7-2ubuntu5) ...
    Setting up libsnmp-session-perl (1.13-1.1) ...
    Setting up smokeping (2.6.8-2+deb7u1ubuntu0.14.04.1) ...
    Adding system user `smokeping' (UID 122) ...
    Adding new group `smokeping' (GID 132) ...
    Adding new user `smokeping' (UID 122) with group `smokeping' ...
     * Starting latency logger daemon smokeping                                                                                                   [ OK ] 
    Processing triggers for libc-bin (2.19-0ubuntu6) ...
    Processing triggers for ureadahead (0.100.0-16) ...

Setting up Fcgiwrap With Nginx

Here you will need to use Fcgiwrap with Nginx to serve CGI scripts. So you will need a CGI server bound to localhost in order to make those accessible.

To configure fcgiwrap, you will need to copy sample fcgiwrap file. You can copy this file with the following command:

sudo cp /usr/share/doc/fcgiwrap/examples/nginx.conf /etc/nginx/fcgiwrap.conf

Next, edit /etc/nginx/fcgiwrap.conf file:

sudo nano /etc/nginx/fcgiwrap.conf

Change the file as shown below:

    # Include this file on your nginx.conf to support debian cgi-bin scripts using
    # fcgiwrap
     include /etc/nginx/fcgiwrap.conf;
    location /cgi-bin/ {
      # Disable gzip (it makes scripts feel slower since they have to complete
      # before getting gzipped)
      gzip off;

      # Set the root to /usr/lib (inside this location this means that we are
      # giving access to the files under /usr/lib/cgi-bin)
      root  /usr/lib;

      # Fastcgi socket
      fastcgi_pass  unix:/var/run/fcgiwrap.socket;

      # Fastcgi parameters, include the standard ones
      include /etc/nginx/fastcgi_params;

      # Adjust non standard parameters (SCRIPT_FILENAME)
     include fastcgi_params;
      fastcgi_param SCRIPT_FILENAME  /usr/lib$fastcgi_script_name;
    }

Now, create links from smokeping to www folder with the following command:

sudo ln -s /usr/share/smokeping/www /var/www/smokeping
sudo ln -s /usr/lib/cgi-bin/smokeping.cgi /usr/share/smokeping/www/smokeping.cgi

Configure Smokeping

Once everything is up-to-date, it’s time to configure smokeping and its different files for monitoring hosts as follow.

First, general configuration file:

sudo nano /etc/smokeping/config.d/General

Change the file as shown below:

    *** General ***

    owner    = Hostpresto  
    contact  = hitjethva@gmail.com 
    mailhost = localhost   
    # 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.
    cgiurl   = http://192.168.1.16/smokeping.cgi
    # 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

    @include /etc/smokeping/config.d/pathnames

Next change the sendmail value as false in /etc/smokeping/config.d/pathnames file:

sudo nano /etc/smokeping/config.d/pathnames

Add / Edit the file as shown below:

    sendmail = /bin/false        
    imgcache = /var/cache/smokeping/images
    imgurl   = ../smokeping/images
    datadir  = /var/lib/smokeping
    piddir  = /var/run/smokeping
    smokemail = /etc/smokeping/smokemail
    tmail = /etc/smokeping/tmail

Next, you need to edit the alert file:

sudo nano /etc/smokeping/config.d/Alerts

Add / Edit the file as shown below:

    *** Alerts ***
    to = hitjethva@gmail.com      
    from = alert@hostpresto.com 

    +someloss
    type = loss
    # in percent
    pattern = >0%,*12*,>0%,*12*,>0%
    comment = loss 3 times  in a row

Now, configure targets file to monitor different servers. You can do this by editing targets file located at /etc/smokeping/config.d/Targets.

sudo nano /etc/smokeping/config.d/Targets

Change the file as per your requirement:

    *** 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.

    + Local

    menu = Local
    title = Local Network
    #parents = owner:/Test/James location:/

    ++ LocalMachine

    menu = Local Machine
    title = This host
    host = localhost
    #alerts = someloss

    + My_Web_Server

    menu = Hostpresto
    title = Hostpresto

    ++ Web_Server_1
    menu = Hostpresto Web
    title = Hostpresto Web
    host = hostpresto.com

    Save the file, restart Nginx and Smokeping with the following command:

    `sudo /etc/init.d/nginx restart`
    `sudo /etc/init.d/smokeping restart`

Access Smokeping Web Interface

Once everything is up-to-date, it’s time to access smokeping web interface.

Now, open your web browser and type the URL http://smokeping-server-ip. You should see the following page:

HP_NO_IMG/data/uploads/users/7ecb43a5-b365-4ebf-93d5-f3b632f29f33/1152094419.png” alt=”” />

Next, click on the chart in the top left sidebar, you should see the following page:

HP_NO_IMG/data/uploads/users/7ecb43a5-b365-4ebf-93d5-f3b632f29f33/1557365360.png” alt=”” />

Want your very own server? Get our 1GB memory, Xeon V4, 25GB SSD VPS for £10.00 / month.
Get a Cloud Server

Share this Article!

Related Posts

Node.js Authentication – A Complete Guide with Passport and JWT

Node.js Authentication – A Complete Guide with Passport and JWT

Truth be told, it’s difficult for a web application that doesn’t have some kind of identification, even if you don’t see it as a security measure in and of itself. The Internet is a kind of lawless land, and even on free services like Google’s, authentication ensures that abuses will be avoided or at least […]

Node.js and MongoDB: How to Connect MongoDB With Node

Node.js and MongoDB: How to Connect MongoDB With Node

MongoDB is a document-oriented NoSQL database, which was born in 2007 in California as a service to be used within a larger project, but which soon became an independent and open-source product. It stores documents in JSON, a format based on JavaScript and simpler than XML, but still with good expressiveness. It is the dominant […]

Using MySQL with Node.js: A Complete Tutorial

Using MySQL with Node.js: A Complete Tutorial

Although data persistence is almost always a fundamental element of applications, Node.js has no native integration with databases. Everything is delegated to third-party libraries to be included manually, in addition to the standard APIs. Although MongoDB and other non-relational databases are the most common choice with Node because if you need to scale an application, […]

Node.Js Vs Django: Which Is the Best for Your Project

Node.Js Vs Django: Which Is the Best for Your Project

Django and NodeJs are two powerful technologies for web development, both have great functionality, versatile applications, and a great user interface. Both are open source and can be used for free. But which one fits your project best? NodeJs is based on JavaScript, while Django is written in Python. These are two equally popular technologies […]

Nodejs Vs PHP:  Which Works Best?

Nodejs Vs PHP: Which Works Best?

Before getting into the “battle” between Node.js and PHP we need to understand why the issue is still ongoing. It all started with the increased demand for smartphone applications, their success forcing developers to adapt to new back-end technologies that could handle a multitude of simultaneous requests. JavaScript has always been identified as a client-side […]