I have recently purchased 3 Dell servers, and put myself to task to build out a new lab. My old lab was in desperate need of updating as I had long past the time when 48GB of memory per node was sufficient. The cost of memory, old or new was not even closely in line with cheap server grade CPUs that were perfect for lab servers. Today you can buy a used E7540, a low power, 12 core (HT enabled) Xeon for less than $30 (USD) from a reputable retailer. Cram two of these into an 11 gen Dell and you are in business.
So, three new (to me) Dell rackmounts, deployed as virtualization servers, and I want a simple way to view performance stats in a nice clean single pain of glass. I am not in any way shape or form looking to build fancy dashboard and setup any sort of historical monitoring. I just want to know where the performance hot spots are when my environment seems to be running slowly.
I installed Cockpit before on a laptop or two and thought it might foot the bill, especially since you could use one dashboard for multiple nodes.
So here we are going to deploy Cockpit on all three nodes, on each the steps are the same.
First we must open a firewall port on each node.
#firewall-cmd –zone=public –add-port=9090/tcp
#firewall-cmd –permanent –zone=public –add-port=9090/tcp
Then on RHEL7 we must enable a couple of repos, on Centos this is not required.
# subscription-manager repos –enable=rhel-7-server-extras-rpms
#subscription-manager repos –enable=rhel-7-server-optional-rpms
Then install the packages as shown below. Note that we are installing several packages, which have several prerequisites (hence the need for the extra repos above). The cockpit is the primary rpm, the cockpit-dashboard is required for connecting to additional hosts (think “Dashboard” tab in the web-UI), and the last rpm in the list is required for disk related metric collection.
# yum install cockpit cockpit-dashboard cockpit-storaged -y
Then enable and start the required service
# systemctl enable cockpit.socket
# systemctl start cockpit.socket
Post Install: Extra Steps
You may notice limited collection for interface stats as well as a message related to enabling NetworkManager. Many headless servers have Network Manager disabled, and configure static interfaces through more traditional methods. The same can not usually said for laptops with wireless NICs. So If you see this message, and want to enable metric manager, make sure your static network interfaces include the following line.
If not, use the sample command below to add it to each conf file. Modify the interface name for each interface, or write some fancy regex. I only had a couple of interfaces that I needed to modify.
# echo ‘NM_CONTROLLED=no’ >> ifcfg-eth0
Then enable and start network manager.
systemctl enable NetworkManager
systemctl start NetworkManager
Accessing the Web-UI
In a browser, navigate to the url below. Replace the IP address in your browser.
Login as root to the remote web-UI.
Adding Additional Nodes
In the UI, click the speedometer (Dashboard) icon in the left pane. Add additional nodes via the blue check box in the bottom left.
Ensure your privileged user (root) has the same password on each host. This will make your life easier.
The dashboard for each server is very nice, lots of useful metrics that I can use for basic troubleshooting. However, so far I see a few areas for improvement.
- Dashboard View: Does aggregate some data for each monitored node, however this page does not appear to be customization.
- Historical Data (node): When viewing a single node’s metrics, data appear to start graphing only after you being viewing a stat. I can not see any metrics from just a minute or so ago.
- Historical Data (dashboard): would be interesting if you could store metrics in a backend database in order to access some historical data for each metric gathered.
For what I see now, so far so good. I plan to see if there are any additional features in the works. For now you can access the documentation here.