Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time
Nov 17, 2020
Oct 27, 2020
Nov 23, 2020
Nov 17, 2020
Nov 23, 2020
Oct 27, 2020
Oct 27, 2020
Oct 27, 2020
Oct 27, 2020


Go Report Card GitHub license GitHub code style GoDoc doc


A tool for monitoring and provisioning (coming soon) 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.

Thola at FOSDEM 2021 - Request for Papers

The Thola team will organize a devroom for Network monitoring, discovery and inventory. Click here for more information.


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

git clone
cd thola
go generate
go build

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 interfaces outputs the interfaces with several values like error counters and statistics.
    • read count-interfaces counts the interfaces.
    • 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 identify compares the device properties with given expectations.
    • check snmp checks SNMP reachability.
    • check interface-metrics outputs performance data for the interfaces, including special values based on the interface type (e.g. Radio Interface).
    • check ups checks if a UPS device has its main voltage applied and outputs additional performance data like battery capacity and current load.
    • check metrics outputs all possible metrics.
    • check thola-server checks reachability of a Thola API.

More features are coming soon:

  • Read out additional information
    • Inventory data
    • System data
    • Device specific data (e.g. DSLAMs)
  • More checks
    • CPU load
    • Memory usage
    • Hardware health
  • Configuration/Provisioning

Quick Start

Use the identify mode to automatically discover some properties of a network device.

$ thola identify

  thola identify [flags]

Specify the address of the network device using the --ip flag. The --format flag modifies the format of the output. --format pretty is set by default and is useful when reading the output manually. Other options are json and xml.

$ thola identify --ip

  Class: ceraos/ip10
    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 --ip

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 api command:

$ 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 --target-api flag.

$ thola-client identify --ip --target-api 

  Class: ceraos/ip10
      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 test 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 testdata/devices folder. After that you just need to run the script located in create_testdata 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!

You can’t perform that action at this time.