How to Install and Configure ‘Collectd’ and ‘Collectd-Web’ to Monitor Server Resources in Linux

8. To visit Collectd-web interface and display statistics about your host, open a browser and point the URL at your server IP Address and port 8888 using HTTP protocol.

By default you will see a number of graphics about CPU, disk usage, network traffic, RAM, processes and other system resources by clicking on the hostname displayed on Hosts form.

http://192.168.1.211:8888
Access Collect-Web Panel
Access Collect-Web Panel
Linux Disk Monitoring
Linux Disk Monitoring

9. To stop the standalone Python server issue the below command or you may cancel or stop the script by hitting Ctrl+c key:

# killall python

Step 5: Create a Custom Bash Script to Manage the Standalone Python Server

10. To manage the standalone PyhtonCGIServer script more easily (start, stop and view status), create the following collectd-server Bash script at a system executable path with the following configurations:

# nano /usr/local/bin/collectd-server

Add the following excerpt to collectd-server file.

#!/bin/bash

PORT="8888"
  case $1 in
            start)
	cd /usr/local/collectd-web/
	python runserver.py 2> /tmp/collectd.log &
    sleep 1
    stat=`netstat -tlpn 2>/dev/null | grep $PORT | grep "python"| cut -d":" -f2 | cut -d" " -f1`
            if [[ $PORT -eq $stat ]]; then
    sock=`netstat -tlpn 2>/dev/null | grep $PORT | grep "python"`
    echo -e "Server is  still running:\n$sock"
            else
    echo -e "Server has stopped"
            fi
                    ;;
            stop)
    pid=`ps -x | grep "python runserver.py" | grep -v "color"`
            kill -9 $pid 2>/dev/null
    stat=`netstat -tlpn 2>/dev/null | grep $PORT | grep "python"| cut -d":" -f2 | cut -d" " -f1`
            if [[ $PORT -eq $stat ]]; then
    sock=`netstat -tlpn 2>/dev/null | grep $PORT | grep "python"`
    echo -e "Server is  still running:\n$sock"
            else
    echo -e "Server has stopped"
            fi
                    ;;
            status)
    stat=`netstat -tlpn 2>/dev/null |grep $PORT| grep "python" | cut -d":" -f2 | cut -d" " -f1`
            if [[ $PORT -eq $stat ]]; then
    sock=`netstat -tlpn 2>/dev/null | grep $PORT | grep "python"`
    echo -e "Server is running:\n$sock"
            else
    echo -e "Server is stopped"
            fi
                    ;;
            *)
    echo "Use $0 start|stop|status"
                    ;;
    esac

In case you have changed PORT variable number from runserver.py script, make sure you make the port variable changes on this bash file accordingly.

11. Once you have created the collectd-server script, add executing permissions in order to be able to run it. The only thing remaining now is to manage the Collectd-web server in a similar way as you do with a system service by issuing the following commands.

# chmod +x /usr/local/bin/collectd-server
# collectd-server start 
# collectd-server status
# collectd-server stop
Collectd Server Script
Collectd Server Script

Step 6: Enable a Collectd Daemon Plug-in

12. In order to activate a plug-in on Collectd service, you must go to its main configuration file, which is located at /etc/collectd/collectd.conf file, open this file for editing and uncomment, the first time (remove the # sign in front) the plug-in name you want to activate.

Once the LoadPlugin statement with the name of the plug-in has been uncommented you must deeply search through the file and locate the same plugin name which holds the configurations required to run.

As an example, here’s how you active Collectd Apache plugin. First open Collectd main configuration file for editing:

# nano /etc/collectd/collectd.conf

A. Use Ctrl+w to enable nano editor search and type apache on below terminal the search filed. Once LoadPlugin apache statement has been found, remove the comment special sign # to uncomment it, as illustrated in the below screenshot.

Enable Collectd Apache Plugin
Enable Collectd Apache Plugin

B. Next, type Ctrl+w to search again, apache should already appear on search filed and press Enter key to find the plug-in configurations.

Once apache plug-in configurations are located (they look similar to Apache web server statements) uncomment the following lines, so that the final configuration should resemble to this:

<Plugin apache>
        <Instance "example.lan">
                URL "http://localhost/server-status?auto"
#               User "www-user"
#               Password "secret"
#               VerifyPeer false
#               VerifyHost false
#               CACert "/etc/ssl/ca.crt"
#               Server "apache"
        </Instance>
#
#       <Instance "bar">
#               URL "http://some.domain.tld/status?auto"
#               Host "some.domain.tld"
#               Server "lighttpd"
#       </Instance>
</Plugin>
Enable Apache Configuration for Collectd
Enable Apache Configuration for Collectd

Note: Replace <Instance "example.lan"> statement string according to your server hostname.

C.
After you finish editing the file, save it (Ctrl+o) and close it (Ctrl+x), then restart Collectd daemon to apply changes. Clear your browser cache and reload the page to view the statistics collected by Collectd daemon so far for Apache Web Server.

# /usr/local/bin/collectd-server start
Apache Monitoring
Apache Monitoring

To enable other plug-ins please visit Collectd Wiki page.

Step 7: Enable Collectd Daemon and Collectd-web Server System-Wide

13. In order to automatically start Collectd-web server from the Bash script at boot time, open /etc/rc.local file for editing and add the following line before the exit 0 statement:

/usr/local/bin/collectd-server start
Enable Collectd Systemwide
Enable Collectd Systemwide

If you’re not using the collectd-server Bash script which manages the Python server script, replace the above line on rc.conf with the following line:

# cd /usr/local/collectd-web/ && python runserver.py 2> /tmp/collectd.log &

Then, enable both system services by issuing the following commands:

------------------ On Debian / Ubuntu ------------------
# update-rc.d collectd enable
# update-rc.d rc.local enable

Optionally, an alternate method to enable this services at boot time would be with the help on sysv-rc-conf package:

------------------ On Debian / Ubuntu ------------------
# sysv-rc-conf collectd on
# sysv-rc-conf rc.local on
------------------ On RHEL/CentOS 6..x/5.x and Fedora 12-19 ------------------
# chkconfig collectd on
# chkconfig --level 5 collectd on
------------------ On RHEL/CentOS 7.x and Fedora 20 onwards ------------------
# systemctl enable collectd

That’s all! Collectd daemon and Collectd-web server prove to be excellent monitoring tools for Linux servers, with minimal impact concerning system resources, which can generate and display some interesting graphical statistics about machines workload, the only drawback so far being the fact the statistics are not displaying in real time without refreshing the browser.

If you read this far, tweet to the author to show them you care. Tweet a thanks
Matei Cezar
I'am a computer addicted guy, a fan of open source and linux based system software, have about 4 years experience with Linux distributions desktop, servers and bash scripting.

Each tutorial at TecMint is created by a team of experienced Linux system administrators so that it meets our high-quality standards.

Join the TecMint Weekly Newsletter (More Than 156,129 Linux Enthusiasts Have Subscribed)
Was this article helpful? Please add a comment or buy me a coffee to show your appreciation.

17 thoughts on “How to Install and Configure ‘Collectd’ and ‘Collectd-Web’ to Monitor Server Resources in Linux”

Got something to say? Join the discussion.

Thank you for taking the time to share your thoughts with us. We appreciate your decision to leave a comment and value your contribution to the discussion. It's important to note that we moderate all comments in accordance with our comment policy to ensure a respectful and constructive conversation.

Rest assured that your email address will remain private and will not be published or shared with anyone. We prioritize the privacy and security of our users.