Need help with thola?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

220 Stars 17 Forks BSD 2-Clause "Simplified" License 534 Commits 0 Opened issues


Tool for monitoring network devices (mainly using SNMP) - monitoring check plugin

Services available


Need anything else?

Contributors list



Go Report Card GitHub code style GitHub license GitHub branch checks state GoDoc doc


A tool for monitoring network devices written in Go. It features a check mode which complies with the monitoring plugins development guidelines and is therefore compatible with Nagios, Icinga, Zabbix, Checkmk, etc.


You can download the latest compiled version for your platform under the "Releases" tab or build it yourself:

git clone
cd thola
go build

Note: This requires Go 1.16 or newer

If you also want to build the client binary, which can be used for sending requests to a running Thola API, use the following build command:

go build --tags client -o thola-client


Thola currently has three main modes of operation with various subcommands:

  • identify
    automatically identifies the device and outputs its vendor, model and other properties.
  • read
    reads out values and statistics of the device.
    • read available-components
      returns the available components for the device.
    • read count-interfaces
      counts the interfaces.
    • read cpu-load
      returns the current cpu load of all CPUs.
    • read disk
      reads storage utilization.
    • read hardware-health
      reads hardware health information like temperatures and fans.
    • read interfaces
      outputs the interfaces with several values like error counters and statistics.
    • read sbc
      reads out SBC specific information.
    • read memory-usage
      reads out the current memory usage.
    • read server
      outputs server specific information like users and process count.
    • read ups
      outputs the special values of a UPS device.
  • check
    performs checks that can be used in monitoring systems. Output is by default in check plugin format.
    • check cpu-load
      checks the average CPU load of all CPUs against given thresholds and outputs the current load of all CPUs as performance data.
    • check disk
      checks the free space of storages.
    • check hardware-health
      checks the hardware-health of a device.
    • check identify
      compares the device properties with given expectations.
    • check interface-metrics
      outputs performance data for the interfaces, including special values based on the interface type (e.g. Radio Interface).
    • check memory-usage
      checks the current memory usage against given thresholds.
    • check sbc
      checks an SBC device and outputs metrics for each realm and agent as performance data.
    • check server
      checks server specific information.
    • check snmp
      checks SNMP reachability.
    • check ups
      checks if a UPS device has its main voltage applied and outputs additional performance data like battery capacity or current load, and compares them to optionally given thresholds.
    • check thola-server
      checks reachability of a Thola API.

Quick Start

Use the

mode to automatically discover some properties of a network device.
$ thola identify

Usage: thola identify [host] [flags]

Specify the address of the network device in the

argument. The
flag modifies the format of the output.
--format pretty
is set by default and is useful when reading the output manually. Other options are
$ thola identify

Device: Class: ceraos/ip10 Properties: Vendor: Ceragon Model: IP-10 SerialNumber: 00:0A:25:25:77:67 OSVersion: 2.9.25-1

Next we want to print the interfaces of the network device and their relevant data. We use the

read interfaces
command for this.
$ thola read interfaces

Interfaces: [8] IfIndex: 1 IfDescr: Radio Interface #0 IfType: sonet IfMtu: 2430 IfSpeed: 367000 ...

IfIndex: 5001 IfDescr: Ethernet #7 IfType: ethernetCsmacd IfMtu: 1548 IfSpeed: 10000000 IfPhysAddress: 00:0A:25:27:57:1E IfAdminStatus: up IfOperStatus: down ...

API Mode

Thola can be executed as a REST API. You can start the API using the

$ thola api
 ______   __  __     ______     __         ______   
/\__  _\ /\ \_\ \   /\  __ \   /\ \       /\  __ \  
\/_/\ \/ \ \  __ \  \ \ \/\ \  \ \ \____  \ \  __ \ 
   \ \_\  \ \_\ \_\  \ \_____\  \ \_____\  \ \_\ \_\
    \/_/   \/_/\/_/   \/_____/   \/_____/   \/_/\/_/

⇨ http server started on [::]:8237

For sending requests to the Thola API you can use the Thola client. When executing the Thola client you can specify the address of the API with the

$ thola-client identify --target-api 

Device: Class: ceraos/ip10 Properties: Vendor: Ceragon Model: IP-10 SerialNumber: 00:0A:25:25:77:67 OSVersion: 2.9.25-1

You can find the full API documentation on our SwaggerHub.

Supported Devices

We support a lot of different devices and hope for your contributions to grow our device collection. Some examples are:

  • Cisco
  • Juniper
  • Huawei
  • Nokia/ISAM
  • Ceragon
  • Brocade
  • Edgecore
  • ...

Basic interface readout is supported for every device.

Supported Protocols

Currently we mostly work with SNMP, but already provide basic features for HTTP(S). We plan to support more protocols like telnet, SSH and more.


You can run our test located in the

directory with the
go test
command if you have Docker and Docker Compose installed.

If you want to add your own devices to the tests you can put your SNMP recordings in the

folder. After that you just need to run the script located in
to create the expectation files and your devices are included in the testsuite!


We are always looking forward to your ideas and suggestions.

If you want to help us please make sure that your code is conform to our coding style.

Happy coding!

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.