All Projects → nakabonne → Gosivy

nakabonne / Gosivy

Licence: mit
Real-time visualization tool for Go process metrics

Programming Languages

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

Projects that are alternatives of or similar to Gosivy

Kubebox
⎈❏ Terminal and Web console for Kubernetes
Stars: ✭ 1,855 (+553.17%)
Mutual labels:  tui, monitoring
Devdash
🍱 Highly Configurable Terminal Dashboard for Developers and Creators
Stars: ✭ 939 (+230.63%)
Mutual labels:  tui, monitoring
Ali
Generate HTTP load and plot the results in real-time
Stars: ✭ 3,055 (+975.7%)
Mutual labels:  tui, monitoring
Kmon
Linux Kernel Manager and Activity Monitor 🐧💻
Stars: ✭ 1,142 (+302.11%)
Mutual labels:  tui, monitoring
Bottom
Yet another cross-platform graphical process/system monitor.
Stars: ✭ 3,182 (+1020.42%)
Mutual labels:  tui, monitoring
Goaccess
GoAccess is a real-time web log analyzer and interactive viewer that runs in a terminal in *nix systems or through your browser.
Stars: ✭ 14,096 (+4863.38%)
Mutual labels:  tui, monitoring
S Tui
Terminal-based CPU stress and monitoring utility
Stars: ✭ 2,825 (+894.72%)
Mutual labels:  tui, monitoring
Questdb
An open source SQL database designed to process time series data, faster
Stars: ✭ 7,544 (+2556.34%)
Mutual labels:  monitoring
Routeros Scripts
a collection of scripts for Mikrotik RouterOS
Stars: ✭ 270 (-4.93%)
Mutual labels:  monitoring
Writing A Tui In Bash
How to write a TUI in BASH
Stars: ✭ 263 (-7.39%)
Mutual labels:  tui
Metered Rs
Fast, ergonomic metrics for Rust
Stars: ✭ 258 (-9.15%)
Mutual labels:  monitoring
Perfmon Agent
Server metrics fetching agent, based on SIGAR
Stars: ✭ 264 (-7.04%)
Mutual labels:  monitoring
Rabbit Hole
RabbitMQ HTTP API client in Go
Stars: ✭ 273 (-3.87%)
Mutual labels:  monitoring
Grav
Performance visualisation tools
Stars: ✭ 262 (-7.75%)
Mutual labels:  monitoring
Alertr
A client/server based multi-purpose alarm and monitoring system
Stars: ✭ 277 (-2.46%)
Mutual labels:  monitoring
Tui
This is a high quanlity components library for VUE
Stars: ✭ 258 (-9.15%)
Mutual labels:  tui
Prometheus.erl
Prometheus.io client in Erlang
Stars: ✭ 276 (-2.82%)
Mutual labels:  monitoring
Stackimpact Go
DEPRECATED StackImpact Go Profiler - Production-Grade Performance Profiler: CPU, memory allocations, blocking calls, errors, metrics, and more
Stars: ✭ 276 (-2.82%)
Mutual labels:  monitoring
Sysmon Config
Sysmon configuration file template with default high-quality event tracing
Stars: ✭ 3,287 (+1057.39%)
Mutual labels:  monitoring
Apm Agent Go
Official Go agent for Elastic APM
Stars: ✭ 269 (-5.28%)
Mutual labels:  monitoring

gosivy

Release go.dev reference

Another visualization tool for Go process metrics.

Demo

Gosivy tracks Go process's metrics and plot their evolution over time right into your terminal, no matter where it's running on. It helps you understand how your application consumes the resources.

Installation

Binary releases are available through here.

MacOS

brew install nakabonne/gosivy/gosivy

RHEL/CentOS

rpm -ivh https://github.com/nakabonne/gosivy/releases/download/v0.2.0/gosivy_0.2.0_linux_$(dpkg --print-architecture).rpm

Debian/Ubuntu

wget https://github.com/nakabonne/gosivy/releases/download/v0.2.0/gosivy_0.2.0_linux_$(dpkg --print-architecture).deb
apt install ./gosivy_0.2.0_linux_$(dpkg --print-architecture).deb

Go

Required: >= 1.10

go get github.com/nakabonne/gosivy

Quickstart

Unsure if Gosivy is for you? Watch Gosivy by using the example application.

Run the example application:

git clone https://github.com/nakabonne/gosivy.git && cd gosivy
go run examples/local/main.go

Then simply perform gosivy with no arguments (it automatically finds the process where the agent runs on):

gosivy

Press q to quit.

Usage

First up, you start the agent in the process where you want to collect statistics. Then execute gosivy to scrape from the agent periodically. You can diagnose processes running not only locally (local mode), but also on another host (remote mode).

Local Mode

Import github.com/nakabonne/gosivy/agent into the target application to launch the agent. See the local example.

package main

import "github.com/nakabonne/gosivy/agent"

func main() {
	if err := agent.Listen(agent.Options{}); err != nil {
		panic(err)
	}
	defer agent.Close()
}

With -l flag can list the processes where the agent runs on:

$ gosivy -l
PID   Exec Path
15788 foo  /path/to/foo

Give the PID of the process to be diagnosed:

$ gosivy 15788

Be sure to start the gosivy process as the same user as the target application.

Remote Mode

Give the address the agent listens on:

package main

import "github.com/nakabonne/gosivy/agent"

func main() {
	err := agent.Listen(agent.Options{
		Addr: ":9090",
	})
	if err != nil {
		panic(err)
	}
	defer agent.Close()
}

Specify the target's agent address accessible by the host where gosivy will be executed:

$ gosivy host.xz:9090

Settings

Command-line options are:

Usage:
  gosivy [flags] <pid|host:port>

Flags:
      --debug                      Run in debug mode.
  -l, --list-processes             Show processes where gosivy agent runs on.
      --scrape-interval duration   Interval to scrape from the agent. It must be >= 1s (default 1s)
  -v, --version                    Print the current version.

Gosivy requires the config directory for pid management. By default it will be created undernearth $HOME/.config (APPDATA on windows). For those who want to assign another directory, GOSIVY_CONFIG_DIR environment variable is available.

Features

  • Simple - Show only minimal metrics.
  • Pull-based monitoring - The agent is designed to just listen on, so the target process does nothing unless you issue a request.
  • Wherever it's running on - Any process can be diagnosed as long as you can access the TCP socket the agent opens.

Supported Architectures

The architectures the agent can perform on are:

  • Darwin i386/amd64
  • Linux i386/amd64/arm(raspberry pi)
  • FreeBSD i386/amd64/arm
  • Windows/amd64
  • OpenBSD amd64
  • Solaris amd64

Those partially supported:

  • CPU on DragonFly BSD
  • host on Linux RISC-V

Built With

Inspired By

Author

Ryo Nakao <[email protected]>

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].