rtop is an interactive, remote system monitoring tool based on SSH

rtop

Join the chat at https://gitter.im/rapidloop/rtop

rtop is a remote system monitor. It connects over SSH to a remote system and displays vital system metrics (CPU, disk, memory, network). No special software is needed on the remote system, other than an SSH server and working credentials.

Only Linux systems can be monitored, and most modern distros will work.

rtop is MIT-licensed and can be used anywhere with attribution.

rtop's home page has more information and screenshots!

build

rtop is written in go, and requires Go version 1.2 or higher. To build, go get it:

go get github.com/rapidloop/rtop

You should find the binary rtop under $GOPATH/bin when the command completes. There are no runtime dependencies or configuration needed.

contribute

Pull requests welcome. Keep it simple.

changelog

  • 9-May-2015: first public release
Owner
RapidLoop
Bringing radical simplicity to DevOps.
RapidLoop
Comments
  • rtop: asn1: structure error: length too large

    rtop: asn1: structure error: length too large

    Hi there,

    I tried to build this on OS X 10.10.3 and everything went well. But now when I try to connect to a remote server, I always get:

    rtop: asn1: structure error: length too large

    What is going wrong here?

    Regards, Fabio

  • asn1: structure error: tags don't match

    asn1: structure error: tags don't match

    Below is what I got, I think it is different from #4

    rtop: asn1: structure error: tags don't match (16 vs {class:0 tag:0 length:28 isCompound:false}) {optional:false explicit:false application:false defaultValue:<nil> tag:<nil> stringType:0 set:false omitEmpty:false} pkcs1PrivateKey @2
    
    Background info

    Commit hash: ed16e84975ef509a788c04368df198b35791506a uname: Linux foobar 4.0.1-1-ARCH #1 SMP PREEMPT Wed Apr 29 12:00:26 CEST 2015 x86_64 GNU/Linux openssh: 6.8p1 openssl: 1.0.2a

  • Use SSH config

    Use SSH config

    Currently, there's no way to use your ~/.ssh/config as a host. It'll just say that no such host is resolvable. It would be cool if that would also work.

  • [OS X] rtop: asn1: structure error: length too large

    [OS X] rtop: asn1: structure error: length too large

    Built as "git clone --recursive http://github.com/rapidloop/rtop; make". Calling "rtop [ipaddress]" returns only error "rtop: asn1: structure error: length too large" and terminates.

  • Expand user home directory

    Expand user home directory

    When reading from .ssh/config go is unable to read keys like: ~/.ssh/id_rsa. This code expands the path names to /home/my_user/.ssh/id_rsa.

    That way go is able to work with the path name :).

  • Unable to connect:  tags don't match

    Unable to connect: tags don't match

    rtop: asn1: structure error: tags don't match (16 vs {class:0 tag:3 length:120 isCompound:true}) {optional:false explicit:false application:false defaultValue:<nil> tag:<nil> stringType:0 set:false omitEmpty:false} pkcs1PrivateKey @
    
  • rtop can't be installed via `go get`

    rtop can't be installed via `go get`

    Steps to reproduce:

    $ go get github.com/rapidloop/rtop
    

    Expected results:

    • rtop is installed

    Actual results:

    $ go get github.com/rapidloop/rtop
    package github.com/rapidloop/rtop
        imports github.com/rapidloop/rtop
        imports github.com/rapidloop/rtop: no buildable Go source files in ~/go/src/github.com/rapidloop/rtop
    

    See also Organizing Go code. Reorganizing the repo would enable go get, permit removal of the Makefile, and permit removal of the SSH-related submodule.

  • LVM partitions not listed

    LVM partitions not listed

    I'm not sure if this is a feature request or bug - rtop does not list partitions that use LVM.

    It lists the boot partition, since this is not using LVM. However my root filesystem is on a LVM partition and this is not listed/monitored in the Filesystem section of the report.

  • ssh: must specify HostKeyCallback

    ssh: must specify HostKeyCallback

    I got this problem when i run this code on my macOS 10.12.3, but i have fixed it by editing the file of sshhelper.go

    about line 214:

    config := &ssh.ClientConfig{
    	User: user,
    	Auth: auths,
    	HostKeyCallback: func(hostname string, remote net.Addr, key ssh.PublicKey) error {
                return nil
            },
    }
    
  • push, instead of pull

    push, instead of pull

    As i understand it, RTOP is a pull based model where a central server ssh's in on some schedule and runs and grabs data. But i am thinking about adapting the model. Dont kil me, but just discussing.... It should be pretty easy to make it just a config setting perhaps..

    1. Run a Scheduler in golang. Easy. Set by config
    2. Runs the standard stats collector
    3. Pushes the data up to the standard endpoint.

    The reason for this Question 7 Issue, is because i have devices out in the field, with the IP address dynamic. Its IOT style world :)

    dont want to break all the other bits to this - for example the central server can be make to work with both push and pull model.

    Would be curious of your thoughts. DO you support this ? DO you want to kill me for suggesting this ? etc

  • Updated install command

    Updated install command

    According to the command line error, the correct syntax is now go install github.com/rapidloop/rtop@latest. Once I adjusted for this, it allowed me to download it direct from the repo.

  • PopOS (Ubuntu 21) install failing

    PopOS (Ubuntu 21) install failing

    Go Version

    (base) vibhu@pop-os:~/Downloads/software$ go version
    go version go1.17.5 linux/amd64
    

    Installation Verification:

    (base) vibhu@pop-os:~/Downloads/software$ go install github.com/rapidloop/rtop@latest
    go: finding module for package golang.org/x/crypto/ssh/terminal
    go: finding module for package golang.org/x/crypto/ssh
    go: finding module for package golang.org/x/crypto/ssh/agent
    go: found golang.org/x/crypto/ssh in golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3
    go: found golang.org/x/crypto/ssh/agent in golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3
    go: found golang.org/x/crypto/ssh/terminal in golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3
    

    Post install the user local go bin:

    (base) vibhu@pop-os:~/Downloads/software$ ls -alt /usr/local/go/bin
    total 16940
    drwxr-xr-x  2 vibhu vibhu     4096 Dec  9 08:53 .
    -rwxr-xr-x  1 vibhu vibhu 14015892 Dec  9 08:53 go
    -rwxr-xr-x  1 vibhu vibhu  3319301 Dec  9 08:53 gofmt
    drwxr-xr-x 10 vibhu vibhu     4096 Dec  9 08:50 ..
    

    Expected Behaviour: As per documentation, find the bin for rtop in the user/local/go/bin.

  • Supporting ssh multiplexing

    Supporting ssh multiplexing

    In my local ~/.ssh/config:

    Host *
        ControlMaster auto
        ControlPath /tmp/ssh-%r@%h:%p.socket
        ControlPersist yes
        ServerAliveCountMax 2
        ServerAliveInterval 120
    

    I enabled ssh multiplexing for any connection, but rtop seems not to be using the ControlPath.

    Is it possible for rtop to use the ControlPath opened by ssh?

  • Does't (yet?) support encrypted keys

    Does't (yet?) support encrypted keys

    Unfortunately, this otherwise nice program doesn't support encrypted keys, there is no way to supply the passphrase:

    Example:

    $ rtop <server>
    rtop: ssh: cannot decode encrypted private keys
    rtop: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none], no supported methods remain
    

    In this case, has a proper entry in ~/.ssh/config, an ssh-agent is running and the encrypted is loaded.

  • 
Fix function comments based on best practices from Effective Go

    Fix function comments based on best practices from Effective Go

    Every exported function in a program should have a doc comment. The first sentence should be a summary that starts with the name being declared. From effective go.

    PR generated by CodeLingo. Install here to drive Continuous Higher Standards.

Monitoring-go - A simple monitoring tool to sites of MOVA

Monitoring GO A simple monitoring tool to sites of MOVA How to use Clone Repo gi

Feb 14, 2022
A system and resource monitoring tool written in Golang!
A system and resource monitoring tool written in Golang!

Grofer A clean and modern system and resource monitor written purely in golang using termui and gopsutil! Currently compatible with Linux only. Curren

Jan 8, 2023
The Prometheus monitoring system and time series database.

Prometheus Visit prometheus.io for the full documentation, examples and guides. Prometheus, a Cloud Native Computing Foundation project, is a systems

Dec 31, 2022
distributed monitoring system
distributed monitoring system

OWL OWL 是由国内领先的第三方数据智能服务商 TalkingData 开源的一款企业级分布式监控告警系统,目前由 Tech Operation Team 持续开发更新维护。 OWL 后台组件全部使用 Go 语言开发,Go 语言是 Google 开发的一种静态强类型、编译型、并发型,并具有垃圾回

Dec 24, 2022
An open-source and enterprise-level monitoring system.
 An open-source and enterprise-level monitoring system.

Falcon+ Documentations Usage Open-Falcon API Prerequisite Git >= 1.7.5 Go >= 1.6 Getting Started Docker Please refer to ./docker/README.md. Build from

Jan 1, 2023
Distributed simple and robust release management and monitoring system.
Distributed simple and robust release management and monitoring system.

Agente Distributed simple and robust release management and monitoring system. **This project on going work. Road map Core system First worker agent M

Nov 17, 2022
Cloudprober is a monitoring software that makes it super-easy to monitor availability and performance of various components of your system.

Cloudprober is a monitoring software that makes it super-easy to monitor availability and performance of various components of your system. Cloudprobe

Dec 30, 2022
Nightingale - A Distributed and High-Performance Monitoring System. Prometheus enterprise edition
Nightingale - A Distributed and High-Performance Monitoring System. Prometheus enterprise edition

Introduction ?? A Distributed and High-Performance Monitoring System. Prometheus

Jan 7, 2022
A GNU/Linux monitoring and profiling tool focused on single processes.
A GNU/Linux monitoring and profiling tool focused on single processes.

Uroboros is a GNU/Linux monitoring tool focused on single processes. While utilities like top, ps and htop provide great overall details, they often l

Dec 26, 2022
Gowl is a process management and process monitoring tool at once. An infinite worker pool gives you the ability to control the pool and processes and monitor their status.
Gowl is a process management and process monitoring tool at once. An infinite worker pool gives you the ability to control the pool and processes and monitor their status.

Gowl is a process management and process monitoring tool at once. An infinite worker pool gives you the ability to control the pool and processes and monitor their status.

Nov 10, 2022
SigNoz helps developers monitor their applications & troubleshoot problems, an open-source alternative to DataDog, NewRelic, etc. 🔥 🖥. 👉 Open source Application Performance Monitoring (APM) & Observability tool
SigNoz helps developers monitor their applications & troubleshoot problems, an open-source alternative to DataDog, NewRelic, etc. 🔥 🖥.   👉  Open source Application Performance Monitoring (APM) & Observability tool

Monitor your applications and troubleshoot problems in your deployed applications, an open-source alternative to DataDog, New Relic, etc. Documentatio

Sep 24, 2021
Simple Golang tool for monitoring linux cpu, ram and disk usage.

Simple Golang tool for monitoring linux cpu, ram and disk usage.

Mar 19, 2022
Cloudinsight Agent is a system tool that monitors system processes and services, and sends information back to your Cloudinsight account.

Cloudinsight Agent 中文版 README Cloudinsight Agent is written in Go for collecting metrics from the system it's running on, or from other services, and

Nov 3, 2022
System resource usage profiler tool which regularly takes snapshots of the memory and CPU load of one or more running processes so as to dynamically build up a profile of their usage of system resources.
System resource usage profiler tool which regularly takes snapshots of the memory and CPU load of one or more running processes so as to dynamically build up a profile of their usage of system resources.

Vegeta is a system resource usage tracking tool built to regularly take snapshots of the memory and CPU load of one or more running processes, so as to dynamically build up a profile of their usage of system resources.

Jan 16, 2022
A flexible process data collection, metrics, monitoring, instrumentation, and tracing client library for Go
A flexible process data collection, metrics, monitoring, instrumentation, and tracing client library for Go

Package monkit is a flexible code instrumenting and data collection library. See documentation at https://godoc.org/gopkg.in/spacemonkeygo/monkit.v3 S

Dec 14, 2022
Open source framework for processing, monitoring, and alerting on time series data

Kapacitor Open source framework for processing, monitoring, and alerting on time series data Installation Kapacitor has two binaries: kapacitor – a CL

Dec 26, 2022
Ping monitoring engine used in https://ping.gg

Disclaimer: If you are new to Go this is not a good place to learn best practices, the code is not very idiomatic and there's probably a few bad ideas

Dec 22, 2022
Simple and extensible monitoring agent / library for Kubernetes: https://gravitational.com/blog/monitoring_kubernetes_satellite/

Satellite Satellite is an agent written in Go for collecting health information in a kubernetes cluster. It is both a library and an application. As a

Nov 10, 2022
mtail - extract internal monitoring data from application logs for collection into a timeseries database
 mtail - extract internal monitoring data from application logs for collection into a timeseries database

mtail - extract internal monitoring data from application logs for collection into a timeseries database mtail is a tool for extracting metrics from a

Dec 29, 2022