• Get In Touch
October 29, 2016

Monitor Your CentOS 7 Server Using Monitorix

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

Monitorix is open source server monitoring software. It is very small and lightweight and is designed to monitor as many services and system resources as possible. Monitorix has been under development since 2005. The software mainly consists of two components, monitorix which is a data collector and starts automatically as system service, the other one is a cgi script called monitorix.cgi. It periodically collects the data and uses its in built web server to graphically display the data. Monitorix was originally developed for enterprise linux distributions, like RHEL, CentOS and Fedora but later it was also implemented in other Linux distributions. It was created for monitoring production Linux servers, but due to it’s simplicity and small size, it can be used with embedded systems also. As it allows overall system monitoring it can help us detect the failures and other anomalies.

In this tutorial we will learn to install Monitorix on CentOS 7 system. We will also learn to configure the service to enable various features.

Requirements

Monitorix does not require any special hardware as it can be installed and used in very basic system. Although you will need root or sudo access to your system. If you are logged in as non root user, you can either execute sudo -i to switch to root account or you can use sudo command at the start of all the administrative command.

Installing Monitorix

Before installing any package, it is recommended to update the system and packages using the following command.

    yum -y update

There are two ways to install Monitorix, one is using the package available in EPEL repository, another one is using the RPM package available on Monitorix website. Both the methods of installing Monitorix are easy but it is recommended that you use RPM package available on Monitorix website as it will have the most updated version of the software available.

Installation Using the EPEL Repository

After updating the system we will need to add EPEL repository into our system as Monitorix is not available in the default repository of CentOS 7. To add the EPEL repository run the following commands.

    yum -y install epel-release
    yum -y update
    yum clean all

Now we can install Monitorix using the following command.

    yum -y install monitorix

That should install Monitorix on your server.

Installation Using an RPM Package

Before you can install the RPM package you will need to install the dependencies required. Some of the dependencies are only available on EPEL repository, hence you will need to install EPEL repository also.

    yum -y install epel-release
    yum -y update
    yum clean all

Now install the required dependencies, run the following command.

    yum install rrdtool rrdtool-perl perl-libwww-perl perl-MailTools perl-MIME-Lite perl-CGI perl-DBI perl-Config-General perl perl-HTTP-Server-Simple perl-IO-Socket-SSL perl-MIME-Lite perl-XML-Simple

Once the dependencies are installed, you can download the RPM package using the following command.

    wget http://www.monitorix.org/monitorix-3.9.0-1.noarch.rpm

If you do not have wget installed, you can run yum -y install wget to install the wget package. You can always check the Monitorix download page to check for the updated link.

Once you download the RPM package, install it using the following command.

    rpm -Uvh monitorix*.rpm

Once you have installed the software, you can start it using following command.

    systemctl start monitorix

To enable Monitorix to automatically start at boot time, run the following command.

    systemctl enable monitorix

You will get following output.

    [root@ip-172-31-11-153 ~]# systemctl enable monitorix
    monitorix.service is not a native service, redirecting to /sbin/chkconfig.
    Executing /sbin/chkconfig monitorix on

To check the status of the monitorix service, run the following command.

    systemctl status monitorix

You will see the status of the service, the output will look similar as shown.

    [root@ip-172-31-11-153 ~]# systemctl status monitorix
    ● monitorix.service - LSB: Start up the Monitorix daemon
       Loaded: loaded (/etc/rc.d/init.d/monitorix)
       Active: active (running) since Fri 2016-10-28 18:10:08 UTC; 14min ago
         Docs: man:systemd-sysv-generator(8)
      Process: 9739 ExecStop=/etc/rc.d/init.d/monitorix stop (code=exited, status=0/SUCCESS)
      Process: 9777 ExecStart=/etc/rc.d/init.d/monitorix start (code=exited, status=0/SUCCESS)
     Main PID: 9782 (/usr/bin/monito)
       CGroup: /system.slice/monitorix.service
               ├─9782 /usr/bin/monitorix -c /etc/monitorix/monitorix.conf -p /var...
               └─9833 monitorix-httpd listening on 8080

    Oct 28 18:10:08 ip-172-31-11-153 systemd[1]: Starting LSB: Start up the Moni....
    Oct 28 18:10:08 ip-172-31-11-153 monitorix[9777]: [37B blob data]
    Oct 28 18:10:08 ip-172-31-11-153 systemd[1]: Started LSB: Start up the Monit....
    Hint: Some lines were ellipsized, use -l to show in full.

To check the version of the software, run the following command.

    monitorix -v

You will likely get following output.

    [root@ip-172-31-11-153 ~]# monitorix -v
    Monitorix version 3.9.0 (14-Oct-2016)
    by Jordi Sanfeliu 
    http://www.monitorix.org/

Configuring Monitorix

Monitorix is configured with a single plain text configuration file /etc/monitorix/monitorix.conf. We will need to make few changes in configuration file before using Monitorix. Before making changes to the configuration file, it is recommended that you take a backup of the file. So that you can restore it, if things break. Run the following command to take the backup of the file.

    cp /etc/monitorix/monitorix.conf /etc/monitorix/monitorix.conf.backup

Open the configuration file in your favorite text editor. In this tutorial we will use nano editor, if you don’t have nano installed, you can run yum -y install nano.

    nano /etc/monitorix/monitorix.conf

In the configuration file change the basic settings available at the start of the file.

    # Monitorix - configuration file
    #
    # See monitorix.conf(5) manpage for a detailed description of each option.
    #

    title = Place a title here
    hostname =
    theme_color = black
    refresh_rate = 150
    iface_mode = graph
    enable_zoom = y
    netstats_in_bps = n
    disable_javascript_void = n
    temperature_scale = c
    show_gaps = n
    global_zoom = 1
    max_historic_years = 1
    accept_selfsigned_certs = y
    image_format = PNG

Provide a title of the application in title = replacing Place a title here. The title can be a description of the server; where it is located or the company name etc. Provide the hostname of your server in hostname = option. In the themes option you can choose either a black theme or white theme.

netstats_in_bps enables you to toggle the network speed shown in bits per second or bytes per second. The default value is bytes per seconds. You can set it to y to switch to bits per second. You can also choose the image format of graphs, either PNG or SVG.

After editing it should look like similar to shown below.

    title = My Server
    hostname = server1.example.com
    theme_color = white
    refresh_rate = 150
    iface_mode = graph
    enable_zoom = y
    netstats_in_bps = y
    disable_javascript_void = n
    temperature_scale = c
    show_gaps = n
    global_zoom = 1
    max_historic_years = 1
    accept_selfsigned_certs = y
    image_format = SVG

Next you will need to restrict the networks who can access the Monitorix built in http server. Scroll down to find these lines


enabled = y host = port = 8080 user = nobody group = nobody log_file = /var/log/monitorix-httpd hosts_deny = hosts_allow =

You can change the port number from 8080 to any free port in your server. Next change hosts_deny = to hosts_deny = all, this will restrict everybody to access the server except the IP address defined in hosts_allow =. Add the IP address or network range in hosts_allow =, from where the Monitorix web page will be accessible. If the IP address of your network is 192.168.0.0/24 then to allow this network, you can write hosts_allow = 192.168.0.0/24.

Once done, restart Monitorix using the following command.

    systemctl restart monitorix

Now you can access Monitorix by going to following link using your favorite browser.

    http://Server-IP-addr:8080/monitorix

You will see following screen.

HP_NO_IMG/data/uploads/users/48f69523-56d0-4f29-856d-cc7423a78486/381179131.png” alt=”” />

Click the OK button and it will show you the graphs related to various services and resources into the system.

HP_NO_IMG/data/uploads/users/48f69523-56d0-4f29-856d-cc7423a78486/1229259978.png” alt=”” />

Enabling Basic Authentication

It is strongly recommended that you use basic authentication to secure Monitorix data from everyone. To use basic authentication find the following lines in the configuration file /etc/monitorix/monitorix.conf.


enabled = y host = port = 8080 user = nobody group = nobody log_file = /var/log/monitorix-httpd hosts_deny = hosts_allow = enabled = n msg = Monitorix: Restricted access htpasswd = /var/lib/monitorix/htpasswd

Change enabled = n to enabled = y to enable basic authentication with password file. You can also remove the hosts_deny = and hosts_allow = with no values to allow access to the webpage to everyone. The page will still be protected with basic authentication. You can also modify the msg value to a more personalized text if you like. The message will be shown to the user in authentication dialog box.

Now you will need to initialize the password file. First of all you will need to install httpd-tools, which comes with a tool htpasswd which we will use to create an encrypted password file. Run the following command to install httpd-tools.

    yum -y install httpd-tools

Now use htpasswd tool to create a password file and add the user admin using the following command.

    htpasswd -d -c /var/lib/monitorix/htpasswd admin

The above command will create a new password file and will ask for the password twice and will add the user and the password into the file. You can use any username in place of admin.

    [root@ip-172-31-11-153 ~]# htpasswd -d -c /var/lib/monitorix/htpasswd admin
    New password:
    Re-type new password:
    Adding password for user admin

Once done restart the Monitorix service using the following command.

    systemctl restart monitorix

Now when you will try to access the graphs page, you will be greeted with a dialog box to provide the authentication details.

HP_NO_IMG/data/uploads/users/48f69523-56d0-4f29-856d-cc7423a78486/270292338.png” alt=”” />

Once you provide correct login details you will be able to access the graphs.

Logs

Although Monitorix maintains separate logs for different services, the main log file of Monitorix can be found at /var/log/monitorix. You can periodically view the log file to find the errors and troubleshoot them. To view the last 10 log entries of the Monitorix log file, run the following command.

    tail /var/log/monitorix

You will see output similar to shown below.

    [root@ip-172-31-11-153 ~]# tail /var/log/monitorix
    Fri Oct 28 18:45:44 2016 - Exiting.
    Fri Oct 28 18:45:44 2016 - Starting Monitorix version 3.9.0 (pid 11478).
    Fri Oct 28 18:45:44 2016 - Loaded main configuration file '/etc/monitorix/monitorix.conf'.
    Fri Oct 28 18:45:44 2016 - Initializing graphs.
    Fri Oct 28 18:45:44 2016 - fs::fs_init: Unable to detect the device name of 'swap'. I/O stats for this filesystem won't be shown in graph. If this is really a mount point then consider using  to map it manually to a device name.
    Fri Oct 28 18:45:44 2016 - fs::fs_init: Unable to detect the device name of '/boot'. I/O stats for this filesystem won't be shown in graph. If this is really a mount point then consider using  to map it manually to a device name.
    Fri Oct 28 18:45:44 2016 - Generating the 'index.html' file.
    Fri Oct 28 18:45:44 2016 - Started built-in HTTP server (pid 11529).
    Fri Oct 28 18:45:44 2016 - Ok, ready.
    HTTPServer: You can connect to your server at http://localhost:8080/

Enabling or Disabling Graphs

By default only few graphs are enabled in Monitorix configuration. Also Monitorix does not collect the data of the service whose graph is not enabled. Below you can find the default list of graphs. You can also find the same in your default configuration file. To enable a specific graph, change the n to y, and restart the Monitorix service, it will automatically create the rrd file for the service and will start collecting and displaying the data for the service.

    # Graphs (de)activation
    # -----------------------------------------------------------------------------

            system          = y
            kern            = y
            proc            = y
            hptemp          = n
            lmsens          = n
            gensens         = n
            nvidia          = n
            disk            = n
            fs              = y
            zfs             = n
            du              = n
            net             = y
            netstat         = y
            tc              = n
            libvirt         = n
            process         = n
            serv            = y
            mail            = n
            port            = y
            user            = y
            ftp             = n
            apache          = n
            nginx           = n
            lighttpd        = n
            mysql           = n
            varnish         = n
            pagespeed       = n
            squid           = n
            nfss            = n
            nfsc            = n
            bind            = n
            ntp             = n
            chrony          = n
            fail2ban        = n
            icecast         = n
            raspberrypi     = n
            phpapc          = n
            memcached       = n
            apcupsd         = n
            nut             = n
            wowza           = n
            int             = y
            verlihub        = n

Conclusion

In this tutorial we have learned how to install Monitorix on CentOS 7 system. We also learnt howw to configure the software to enable various features like basic authentication, etc. You can now successfully deploy this open source lightweight tool to monitor your services and resources.

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 […]