A small tcp server for monitoring a node in a cluster
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Go to file
Antonio De Lucreziis 09a6b8374f initial commit 1 year ago
.github/workflows initial commit 1 year ago
.gitignore initial commit 1 year ago
README.md initial commit 1 year ago
go.mod initial commit 1 year ago
main.go initial commit 1 year ago

README.md

Go Stats Server

This Go project implements a simple TCP server that responds to custom commands over the network. The server performs various system-related tasks and provides information such as CPU usage, memory status, network statistics, storage details, and system uptime.

Usage

  1. Build the Server:

    CGO_ENABLED=0 GOARCH=<arch> go build -a -ldflags '-s -w' -o ./out/stats-server main.go
    
  2. Run the Server:

    ./out/stats-server
    
  3. Connect to the Server: Use a TCP client to connect to the server on port 12345. You can send commands like "cpu," "memory," "network," "storage," "uptime," and "exit."

    Example using nc:

    echo "cpu" | nc localhost 12345
    

    or using golang

    import "net"
    
    func main() {
        conn, err := net.Dial("tcp", "localhost:12345")
        if err != nil {
            // handle error
        }
        defer conn.Close()
    
        conn.Write([]byte("cpu"))
    }
    

GitHub Actions Workflow

The included GitHub Actions workflow automates the build and release process. On each push to the main branch, the workflow builds the Go program, creates a GitHub release, and uploads the compiled binary as an artifact.

Downloading the Artifact

TODO