The Need for (Internet) Speed… graph

Another one of more or less useful “projects” that got my attention was enabling Zabbix (while monitoring everything else) to also keep track of my Internet speed. There are sources on the Internet that tell you how (easy it is) to do it, but I was not that lucky – had issues trying to set it up. 🤷‍♂️🙂

 

What I’m using:
– Zabbix 7 (installed on Ubuntu 24.04)
(https://www.zabbix.com/download?os_distribution=ubuntu)
– Speedtest CLI by Ookla
(https://www.speedtest.net/apps/cli)
– some scripts

 

So, Zabbix is installed and working, no big surprise there.

 

Next thing we need to install is Speedtest CLI by Ookla – it’s a simple installation… sort of.
Installing it directly on Zabbix server.

(copy/paste from Ookla’s site – https://www.speedtest.net/apps/cli):

This usually works, but didn’t work for me. 🙂

Something cannot be found… hmmm… maybe if we look for “jammy Release”? 🤔

That (= changing “noble” to “jammy” in the sources list file) fixed it! Yaay! And now we can install speedtest:

If all goes well, we can check the version:

And we can test it couple of times manually, to see if it’s working:

 

Cool! This works! 🙂
Now the tough part – how can I make Zabbix pick it up?!

 

Let’s just say that the “normal and direct way” didn’t work that well (Speedtest tool was probably hitting timeouts on the Zabbix side, and had issues in delivering results to Zabbix – seen the timeout errors).

 

So, another solution was necessary – to work around the timeout errors, I’m actually running the Speedtest tool, store/cache data temporarily, and then Zabbix picks it up when it’s in the mood to do so. As I’m doing measurements every 15 minutes or so, there is plenty of time to pick the numbers up and not run into timeouts.

 

Solution is (relatively) simple:

– script that runs and stores/caches measurements (speedtest-cache.sh)
– systemd service and timer that run the script in 15-minute intervals (zabbix-speedtest.service, zabbix-speedtest.timer)
– script that reads measurements from the Zabbix side (speedtest-read.sh)
– Zabbix items representing measured values (template-speedtest-cache.xml)
– widget/graph that shows data in Zabbix

 

And here it is:
/usr/lib/zabbix/externalscripts/speedtest-cache.sh:

/etc/systemd/system/zabbix-speedtest.service:

/etc/systemd/system/zabbix-speedtest.timer:

/usr/lib/zabbix/externalscripts/speedtest-read.sh:

(manually imported) template-speedtest-cache.xml:

Added all the scripts, timers and services, fixed all the permissions, checked that I have data, and now my Internet Speed Monitor widget looks like this (it’s not much, but hey! 🙂):

Cheers!

P.S. I’m not a Zabbix expert, and I’m not responsible if this “solution” causes you any troubles!

P.P.S. Don’t just copy everything from the Internet! It’s full of bad people (and code)! 😉

Citrix NetScaler 12 – CLI upgrade helps

There is a new and shiny NetScaler version available – version 12! Smile

All the news and docs are available here, and you can download the latest bits from here. But, I will not write about them now – there is something else I would like to share.

Unlike with other (minor) upgrades, upgrading to this version… well, there were some “challenges”. If you have used Citrix NetScaler before, it has its nice and simple GUI, through which you can do many things… one of them being a system upgrade.

Upgrade process by using GUI is pretty straight-forward:

  • download the latest firmware from Citrix website (.tgz file)
  • login to the appliance and save current configuration
  • if you are using virtual appliances, you can also do a snapshot or checkpoint (depending on the virtualization platform you are using)
  • go to System System Upgrade and select the firmware file and click Upgrade

image

  • when installation completes, reboot the appliance
  • enjoy your shiny, new NetScaler 12 (upgraded in just 6 steps)! Smile

And now about “the other way”… Smile

As I’ve observed, upgrade option through GUI was not working (for me) in any of the major browsers (Chrome, Firefox, Edge or even Internet Explorer) – upload of firmware finishes and then… nothing really happens. Strange, but… it’s just my luck. No big deal! Smile

What helped in my case:

  • download the latest firmware from Citrix website (.tgz file)
  • use PuTTY to establish SSH connection to your appliance
  • run save config to save all the changes you have made to your existing configuration (but maybe forgot to save it before Smile)
  • if you are using virtual appliances, you can also do a snapshot or checkpoint (depending on the virtualization platform you are using)
  • type in shell (to enter the shell, where we will work with files)
  • create a folder for the new version (I have simply called it 12, as in /var/nsinstall/12/, where I will upload the new firmware)
  • use PSCP (PuTTy Secure Copy Client), also a free command-line utility to copy firmware to the appliance, inside the newly created folder:

image

  • go back to PuTTy and extract the contents of this firmware:

  • once extracted, run the ./installns command, which will actually do the upgrade (something that was never triggered in my GUI upgrade attempts, obviously Smile)
  • when installation completes, reboot the appliance

image

  • enjoy your shiny, new NetScaler 12 (upgraded in just 11 steps)! Smile

image

image

For a longer, better explained… and official version, please check the Citrix docs, available here.

Note that nothing really changes in your usual upgrade routine – those steps are just in case you have trouble with the GUI, as I did (if your GUI works normally, with your browser, use it).

Hope it helps!

Cheers!