All Projects → inexio → Thola

inexio / Thola

Licence: bsd-2-clause
Tool for monitoring and provisioning network devices (mainly using SNMP) - monitoring check plugin

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Thola

Wgcloud
linux运维监控工具,支持系统信息,内存,cpu,温度,磁盘空间及IO,硬盘smart,系统负载,网络流量等监控,API接口,大屏展示,拓扑图,进程监控,端口监控,docker监控,文件防篡改,日志监控,数据可视化,web ssh,堡垒机,指令下发批量执行,linux面板,探针,故障告警
Stars: ✭ 2,669 (+1391.06%)
Mutual labels:  monitoring, zabbix, nagios
Sakuli
Sakuli is an end-2-end testing and monitoring tool for web sites and common UIs with multiple monitoring integrations
Stars: ✭ 115 (-35.75%)
Mutual labels:  monitoring, nagios, icinga
Awesome Monitoring
INFRASTRUCTURE、OPERATION SYSTEM and APPLICATION monitoring tools for Operations.
Stars: ✭ 356 (+98.88%)
Mutual labels:  monitoring, zabbix, nagios
Check docker
Nagios plugin to check docker containers
Stars: ✭ 113 (-36.87%)
Mutual labels:  monitoring, nagios, icinga
Thruk
Thruk is a multibackend monitoring webinterface for Naemon, Nagios, Icinga and Shinken using the Livestatus API.
Stars: ✭ 357 (+99.44%)
Mutual labels:  monitoring, nagios, icinga
Zabbixdba
Zabbix Database Monitoring Service (Oracle, Pg, MySQL, MS SQL, DB2, etc.)
Stars: ✭ 68 (-62.01%)
Mutual labels:  monitoring, zabbix
Pm2 Zabbix
A Node.js PM2 monitoring tool for Zabbix.
Stars: ✭ 71 (-60.34%)
Mutual labels:  monitoring, zabbix
Zorka
Sophisticated monitoring agent for Java
Stars: ✭ 178 (-0.56%)
Mutual labels:  monitoring, zabbix
Zabbix Haproxy
HAProxy Zabbix Discovery and Template
Stars: ✭ 169 (-5.59%)
Mutual labels:  monitoring, zabbix
Grafana Zabbix Dashboards
Grafana dashboards for Zabbix
Stars: ✭ 50 (-72.07%)
Mutual labels:  monitoring, zabbix
Nagvis
Visualization addon for your open source monitoring core
Stars: ✭ 103 (-42.46%)
Mutual labels:  nagios, icinga
Zabbix
Real-time monitoring of IT components and services, such as networks, servers, VMs, applications and the cloud.
Stars: ✭ 1,914 (+969.27%)
Mutual labels:  monitoring, zabbix
Manubulon Snmp
Set of Icinga/Nagios plugins to check hosts and hardware with the SNMP protocol.
Stars: ✭ 63 (-64.8%)
Mutual labels:  snmp, icinga
Zabbix Docker Monitoring
🐳 Docker/Kubernetes/Mesos/Marathon/Chronos/LXC/LXD/Swarm container monitoring - Docker image, Zabbix template and C module
Stars: ✭ 1,098 (+513.41%)
Mutual labels:  monitoring, zabbix
Pyora
Python script to monitor Oracle Databases
Stars: ✭ 96 (-46.37%)
Mutual labels:  monitoring, zabbix
Nagflux
A connector which copies performancedata from Nagios / Icinga(2) / Naemon to InfluxDB
Stars: ✭ 55 (-69.27%)
Mutual labels:  nagios, icinga
Openitcockpit
openITCOCKPIT is an Open Source system monitoring tool built for different monitoring engines like Nagios, Naemon and Prometheus.
Stars: ✭ 108 (-39.66%)
Mutual labels:  monitoring, nagios
Icinga2
Icinga is a monitoring system which checks the availability of your network resources, notifies users of outages, and generates performance data for reporting.
Stars: ✭ 1,670 (+832.96%)
Mutual labels:  monitoring, icinga
Check nwc health
check_nwc_health is a plugin which checks the health of network components and interfaces.
Stars: ✭ 127 (-29.05%)
Mutual labels:  nagios, icinga
Interfacetable v3t
interfacetable_v3t (formerly check_interface_table_v3t)
Stars: ✭ 14 (-92.18%)
Mutual labels:  nagios, icinga

Thola

Thola

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

Description

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.

Installation

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

git clone https://github.com/inexio/thola.git
cd thola
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

Features

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 cpu-load returns the current cpu load of all CPUs.
    • read memory-usage reads out the current memory usage.
    • read disk reads storage utilizations.
    • read server outputs server specific information like users and process count.
    • read ups outputs the special values of a UPS device.
    • read sbc reads out SBC specific information.
  • 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 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 memory-usage checks the current memory usage against given thresholds.
    • 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 disk checks the free space of storages.
    • check server checks server specific information.
    • check thola-server checks reachability of a Thola API.
    • check sbc checks an SBC device and outputs metrics for each realm and agent as performance data.

More features are coming soon:

  • Read out additional information
    • Inventory data
    • Sensors and Status Flags like temperatures, frequencies, alarms, etc.
    • Device specific data (e.g. DSLAMs)
  • More checks
    • Hardware health
    • Device specific checks
  • Configuration/Provisioning

Quick Start

Use the identify 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 [host] argument. 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 10.204.2.90

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 10.204.2.90

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 10.204.2.90 --target-api http://192.168.10.20:8237 

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.

Tests

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!

Contribution

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!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].