spring-boot-actuator-cli

command module
v0.0.0-...-73e0b8f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 29, 2021 License: MIT Imports: 3 Imported by: 0

README

Spring Boot Actuator CLI

sba-cli is a command-line utility to work with a Spring Boot application's Actuator endpoint.

actuator screenshot

Check out additional screenshots in docs/screenshots/

Usage

Quick Start

sba-cli is available as a stand-alone binary. Pre-built binaries are available in the Releases.

The most basic usage of sba-cli is to check the info of a Spring Boot app.

# ./sba-cli info -U <baseURL to your app>
$ ./sba-cli info -U http://localhost:8080
┌─────────────────────────────┐
│         SERVICE INFO        │
├──────────────┬──────────────┤
│ title        │ demo-service │
└──────────────┴──────────────┘
┌────────────────────────────────────────────────────────────┐
│                          GIT INFO                          │
├─────────────────┬──────────────────────────────────────────┤
│ branch          │ main                                     │
│ commit.time     │ 2021-03-24 01:18:38+0000                 │
│ commit.describe │ 0.0.3-6-gc6c4cdb-dirty                   │
│ commit.abbrev   │ c6c4cdb                                  │
│ commit.full     │ c6c4cdb3932d1b2f28b342fbeb1c3de1d724114e │
└─────────────────┴──────────────────────────────────────────┘

sba-cli aims to provides a more legible output for most of the default Actuator endpoints. Currently supported endpoints are - actuator,info, env, health, logfile, prometheus, metrics.

Users can still reach unsupported or custom endpoints and make use of the Inventory functionality by using the custom command.

# ./sba-cli custom \
#    -E <custom endpoint's path ID> \
#    -U <baseURL to your app> \
#    --skip-pretty-print
$ ./sba-cli custom \
    -E prometheus \
    -U http://localhost:8080 \
    --skip-pretty-print

# HELP jvm_buffer_total_capacity_bytes An estimate of the total capacity of the buffers in this pool
# TYPE jvm_buffer_total_capacity_bytes gauge
jvm_buffer_total_capacity_bytes{application="user-service",id="mapped",} 0.0
jvm_buffer_total_capacity_bytes{application="user-service",id="direct",} 81920.0
...
Inventory

Chances are that you are managing multiple micro-services. sba-cli is designed to support this is use case by allowing the user to supply an Inventory. An Inventory can be defined in a config.yaml that must be placed in the same directory as sba-cli. Refer to the config.sample.yml

After defining multiple services in your config.yaml, you can refer to a specific service by passing it's name in -S flag.

# ./sba-cli info -S <name of a specific service>
$ ./sba-cli info -S demo-service
>>> demo-service
┌─────────────────────────────┐
│         SERVICE INFO        │
├──────────────┬──────────────┤
│ title        │ demo-service │
└──────────────┴──────────────┘
┌────────────────────────────────────────────────────────────┐
│                          GIT INFO                          │
├─────────────────┬──────────────────────────────────────────┤
│ branch          │ main                                     │
│ commit.time     │ 2021-03-24 01:18:38+0000                 │
│ commit.describe │ 0.0.3-6-gc6c4cdb-dirty                   │
│ commit.abbrev   │ c6c4cdb                                  │
│ commit.full     │ c6c4cdb3932d1b2f28b342fbeb1c3de1d724114e │
└─────────────────┴──────────────────────────────────────────┘

Multiple specific services can be passed as a comma-separated string. sba-cli will iterate and print the responses for each.

$ ./sba-cli info -S demo-service,demo-service-prod
>>> demo-service
┌─────────────────────────────┐
│         SERVICE INFO        │
├──────────────┬──────────────┤
│ title        │ demo-service │
└──────────────┴──────────────┘
┌────────────────────────────────────────────────────────────┐
│                          GIT INFO                          │
├─────────────────┬──────────────────────────────────────────┤
│ branch          │ main                                     │
│ commit.time     │ 2021-03-24 01:18:38+0000                 │
│ commit.describe │ 0.0.3-6-gc6c4cdb-dirty                   │
│ commit.abbrev   │ c6c4cdb                                  │
│ commit.full     │ c6c4cdb3932d1b2f28b342fbeb1c3de1d724114e │
└─────────────────┴──────────────────────────────────────────┘
>>> demo-service-prod
┌─────────────────────────────┐
│         SERVICE INFO        │
├──────────────┬──────────────┤
│ title        │ demo-service │
└──────────────┴──────────────┘
┌────────────────────────────────────────────────────────────┐
│                          GIT INFO                          │
├─────────────────┬──────────────────────────────────────────┤
│ branch          │ main                                     │
│ commit.time     │ 2021-03-24 01:18:38+0000                 │
│ commit.describe │ 0.0.3-6-gc6c4cdb-dirty                   │
│ commit.abbrev   │ c6c4cdb                                  │
│ commit.full     │ c6c4cdb3932d1b2f28b342fbeb1c3de1d724114e │
└─────────────────┴──────────────────────────────────────────┘

Inventory Tagging

Complicated Inventories can be managed and queried easily with Tags. Each Inventory entry can have a list of string tags associated to it. During runtime, pass a query tag (multiple as a comma-separated string) and sba-cli will match the Inventory appropriately. Refer to config.sample.yml for additional details.

$ ./sba-cli health -T dev,prod
>>> demo-service-dev
┌─────────────────┐
│      HEALTH     │
├────────┬────────┤
│ status │ UP     │
└────────┴────────┘

>>> demo-service-prod
┌─────────────────┐
│      HEALTH     │
├────────┬────────┤
│ status │ UP     │
└────────┴────────┘
Debugging with Verbose
$ ./sba-cli custom -V \
    --url http://localhost:8080 \
    --auth-header "Basic YXJraXRzOmh1bnRlcjI=" \
    --endpoint health
>>> url was set... assuming impromptu definition
>>> GET http://localhost:8080
>>> Authorization: Basic YXJraXRzOmh1bnRlcjI=
>>> Proto: HTTP/1.1 Status: 200
{
  "status": "UP"
}

Development

Building + Running Locally
# Download Go dependencies
$ go mod download

# Run sba-cli
$ go run main.go

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL