The simple and easy-to-use program designed to watch user activity for Cloud Providers.

Cloud Agent

license Go Report Card build Coverage

The simple and easy-to-use program is designed to watch user activity and possible orphan clusters for Cloud Providers:

  • Gardener
  • GCP (work in progress)

This application is created with a view to using it as the tmux status. To fulfill this criterion the procedure of getting resources from the gardener is separated and is in the second service which serves the UNIX socket that is used by the first one. This architecture allows not to block the main tmux process during calling the right gardener endpoint.

Installation

Github Release

Visit the releases page to download one of the pre-built binaries for your platform.

Homebrew

  1. Use Homebrew to install cloudagent:

    brew install pPrecel/tap/cloudagent

    or

    brew tap pPrecel/tap
    brew install cloudagent
  2. Extend configuration (see also) in the ~/.cloudagent.conf.yaml location.

  3. Start the cloudagent service:

    brew services start cloudagent

Make use of it

After installing, configuring, and starting the service process, cloudagent would fetch info from given clouds after ~60sec from start. To check that program is working correctly use:

cloudagent state

NOTE: I really recommend you to use --help for all commands to familiarize with all functionalities. Logs from running service are stored in /tmp/cloudagent/cloudagent.stdout and you can use for example cat program to read all of them.

Integration with tmux

To add this application to tmux put the line below in the ~/.tmux.conf file:

set -ag status-right ' #(cloudagent state --createdBy <OWNER_NAME> -o text) '

Contribution

Any help and contribution would be welcome. If you want to help with creating feature requests, logging bugs, or/and working on any existing ticket, go to the issues tab. If you decided to look into code, this document would be helpful.

Comments
  • Agent is not handling cluster status correctly

    Agent is not handling cluster status correctly

    Description:

    After creating a cluster it has the status EMPTY instead of UNKNOWN:

     ──────────── ───────────────────────────────────── ────────────
    │ NAME (6)   │ CREATED BY                          │ CONDITION  │
     ──────────── ───────────────────────────────────── ────────────
    │ ...                                                           │
    │ fs         │ fi...p.com                          │ EMPTY      │
    │ ...                                                           │
     ──────────── ───────────────────────────────────── ────────────
    
  • Improve the `output` package

    Improve the `output` package

    Description:

    The output package in the internal/output folder is designed to be used in the context of printing cluster states. Let's think about redesigning it to allow integration with printing configuration.

    The problem is with templating too - now it's based on the gjson formats. We should think about migrating it into go templates or any other tool with more user-friendly syntax.

    At the end of this story, we should migrate from the forked library into something else like tablewriter.

  • Extend `cloudagent config` command

    Extend `cloudagent config` command

    Description:

    The cloudagent config method contains only one sub-command (schema). To make cloudagent more user-friendly let's implement the following subcommands to give users the possibility to modify existing config files without any manual action:

    • [x] cloudagent config - print actual configuration
    • [x] cloudagent config schema - print config jsonschema
    • [x] cloudagent config gardener add - add gardener project
    • [x] cloudagent config gardener del - delete gardener project
  • Improve  self-healing

    Improve self-healing

    Description:

    The cloudagent is based on cron jobs that are watching the right cloud every given period of time. The problem would be when any of the cron jobs will fail. Let's improve this mechanism to heal every failing cron and warn user that something may be not ok.

  • Dynamic config fetching

    Dynamic config fetching

    Description:

    The cloudagent run once will not detect any change of the config file. Let's add a config watcher which should detect every change around the config file and then rebuild watcher functions.

  • Implement more filters for the `state` command

    Implement more filters for the `state` command

    Description:

    • implement filters: project, condition, selector, updated-after, updated-before, created-after and created-before.
    • implement timestamp package

    Issue/s:

    • https://github.com/pPrecel/cloudagent/issues/12
  • Allow user to diagnose working cloudagent

    Allow user to diagnose working cloudagent

    Description:

    The only way to diagnose when cloudagent has any problems with clouds/config is to print logs. There should be a more straightforward possibility to grab all logs or/and even show user status for every cloud entry (show if anything is not ok and if data is up to date).

  • Rancher and Krew support

    Rancher and Krew support

    Description:

    Rancher Desktop installs the kubectl under the $HOME/.rd/bin folder same as the krew which installs plugins under the $HOME/.krew/bin folder. This PR add these paths to the cloudagent PATH env

  • Improve self healing

    Improve self healing

    Description:

    • Improve self-healing by adding a client builder to run every error during watching resources
    • Improve logging by adding a few fields to easily recognize the source of logs

    Issue/s:

    • https://github.com/pPrecel/cloudagent/issues/6
  • Print cluster life duration

    Print cluster life duration

    Description:

    This tool is designed to help users with monitoring orphans and not needed clusters. To help with this user should know which clusters are old and which ones are run and how long. We should add this info when user is running the cloudagent state command.

    Example output format:

         PROJECT     |      NAME      |             CREATED BY              | CONDITION  | PROVIDER  |  AGE  |  LIVE FOR
    -----------------|----------------|-------------------------------------|------------|-----------|-------|------------
    
  • Improve the `config` command

    Improve the `config` command

    Description:

    • Implement the config gardener add and the config gardener del command
    • Improve the config command

    Issue/s: https://github.com/pPrecel/cloudagent/issues/7

  • Possibility to ask for data without caching

    Possibility to ask for data without caching

    Description:

    There are some use-cases for the cloudagent to work without caching the last data and getting possible latest info from cloud providers. We should add a new option for the persistendSpec field (for example no-cache) to enable the functionality of asking for data only if someone reaches the socket (without caching).

  • Linux support

    Linux support

    Description:

    Right now the cloudagent is ready to work on Linux as well but we did not support any other way of installation than using the homebrew tap. Let's think about apk/apt/aur and prove that cloudagent is fully compatible with Linux distributions.

  • GCP support

    GCP support

    Description:

    To extend the flexibility of the cloudagent, the program should contain the functionality of working with other clouds than the gardener only. Let's start with GCP.

  • EPIC: Release `v1.0.0`

    EPIC: Release `v1.0.0`

    Description:

    To release version v1.0.0 cloudagent should contain following features:

    • https://github.com/pPrecel/cloudagent/issues/2
    • https://github.com/pPrecel/cloudagent/issues/4
    • https://github.com/pPrecel/cloudagent/issues/5
    • https://github.com/pPrecel/cloudagent/issues/6
    • https://github.com/pPrecel/cloudagent/issues/7
    • https://github.com/pPrecel/cloudagent/issues/12
    • https://github.com/pPrecel/cloudagent/issues/17
Rclone ("rsync for cloud storage") is a command-line program to sync files and directories to and from different cloud storage providers.
Rclone (

Website | Documentation | Download | Contributing | Changelog | Installation | Forum Rclone Rclone ("rsync for cloud storage") is a command-line progr

Nov 5, 2021
A terminal designed for anyone to use and designed for any platform

A terminal designed for anyone to use and designed for any platform. Which includes the basic features of any terminal and includes friendly commands to perform tools such as ping, traceroute, generate key pairs, encrypt/decrypt, router security actions, etc. All of the source code is done in Go.

Jan 25, 2022
Reads from existing Cloud Providers (reverse Terraform) and generates your infrastructure as code on Terraform configuration
Reads from existing Cloud Providers (reverse Terraform) and generates your infrastructure as code on Terraform configuration

TerraCognita Imports your current Cloud infrastructure to an Infrastructure As Code Terraform configuration (HCL) or/and to a Terraform State. At Cycl

Dec 30, 2022
Run your MapReduce workloads as a single binary on a single machine with multiple CPUs and high memory. Pricing of a lot of small machines vs heavy machines is the same on most cloud providers.

gomap Run your MapReduce workloads as a single binary on a single machine with multiple CPUs and high memory. Pricing of a lot of small machines vs he

Sep 16, 2022
Simple activity indicator for your command line tools.
Simple activity indicator for your command line tools.

Simple activity indicator for your command line tools.

Oct 22, 2021
A terminal based graphical activity monitor inspired by gtop and vtop
A terminal based graphical activity monitor inspired by gtop and vtop

NO LONGER MAINTAINED. A maintained fork of gotop exists at https://github.com/xxxserxxx/gotop. Another terminal based graphical activity monitor, insp

Jan 1, 2023
Procmon is a Linux reimagining of the classic Procmon tool from the Sysinternals suite of tools for Windows. Procmon provides a convenient and efficient way for Linux developers to trace the syscall activity on the system.
Procmon is a Linux reimagining of the classic Procmon tool from the Sysinternals suite of tools for Windows. Procmon provides a convenient and efficient way for Linux developers to trace the syscall activity on the system.

Process Monitor for Linux (Preview) Process Monitor (Procmon) is a Linux reimagining of the classic Procmon tool from the Sysinternals suite of tools

Dec 29, 2022
An easy to use go program to download videos from Reddit

Gedditsave Download videos from reddit from the command line. Use guide geddit -

Oct 17, 2022
An easy to use go program to download videos from Reddit.
An easy to use go program to download videos from Reddit.

Gettit Download videos from reddit from the command line. Use guide gettit -u post_url Example : gettit -u https://www.reddit.com/r/programminghorror/

Dec 30, 2022
Raspberry Pi terminal based activity monitor
Raspberry Pi terminal based activity monitor

pitop Raspberry Pi terminal based activity monitor Yes I know there are plenty of solutions already available, but I wanted to build my own terminal b

Dec 11, 2022
simple cli app for search and watch anime

simple terminal app for search and watch movie or anime

Oct 30, 2021
Watcher - A simple command line app to watch files in a directory for changes and run a command when files change!

Watcher - Develop your programs easily Watcher watches all the files present in the directory it is run from of the directory that is specified while

Mar 27, 2022
ghcv-cli makes it easy to view the user-created issues, pull requests, and repositories in the terminal.
ghcv-cli makes it easy to view the user-created issues, pull requests, and repositories in the terminal.

ghcv-cli ghcv-cli makes it easy to view the user-created issues, pull requests, and repositories in the terminal. About Show a list of pull requests c

Mar 13, 2022
CLI to support with downloading and compiling terraform providers for Mac with M1 chip

m1-terraform-provider-helper A CLI to help with managing the installation and compilation of terraform providers when running a new M1 Mac. Motivation

Jan 2, 2023
👀 A modern watch command. Time machine and pager etc.
👀 A modern watch command. Time machine and pager etc.

Viddy Modern watch command. Viddy well, gopher. Viddy well. Demo Features Basic features of original watch command. Execute command periodically, and

Jan 2, 2023
Simple and easy to use command line application written in Go for cleaning unnecessary XCode files.

xcclear Say hello to a few extra gigabytes of space on your Mac with xcclear, a simple and easy to use command line application written in Go for clea

Dec 16, 2022
Simple, lightweight, and easy to use gopacket wrapper cli

gniffer Simple, lightweight, and easy to use gopacket wrapper cli Explore the docs » View Demo · Report Bug · Request Feature Table of Contents About

Dec 25, 2021
This is a cli to watch anime using the console/terminal.
 This is a cli to watch anime using the console/terminal.

monas-chinas-cli Este un un cli para ver anime usando la consola/terminal. This is a cli to watch anime using the console/terminal. ⚠️ AVISO ⚠️ Los an

Dec 8, 2022
Watch your favourite anime using the video player of your choice directly from the command line

anime-cli Watch your favourite anime using the video player of your choice direc

Feb 10, 2022