Insta-Monitis
A simple ruby CLI which enables the quick creation or listing of tests in a Monitis account.
Leverages v3 of the Monitis API.
TODO:
- Flesh out creating .monitis via API call with username/password
- Add functionality to manage Pages/Organization in Monitis dashboard UI
- Build out Testing via Rake/etc.
- Comments, Comments, Comments
- Error handling
Requirements
Requires rubygems thor and bundler.
Install with:
~> gem install thor
~> gem install bundler
Installation
Add this line to your application's Gemfile:
gem 'insta-monitis'
And then execute:
~> bundle
Or install it yourself as:
~> gem install insta-monitis
Setup / Credentials
Create a file called .monitis in your $HOME.
It should contain your API key and secret, like so:
~> cat ~/.monitis
key: RANDOMSTRINGOFRANDOMNESS
secret: THISISSUPERSECRET
~>
Usage
Help menu:
~> insta-monitis
Commands:
insta-monitis add <subcommand> <args> # Perform add operations
insta-monitis help [COMMAND] # Describe available commands or one specific command
insta-monitis list <subcommand> <args> # Perform list operations
insta-monitis search <subcommand> <args> # Perform search operations
Options:
[--verbose], [--no-verbose]
List:
~> insta-monitis list
Commands:
insta-monitis list help [COMMAND] # Describe subcommands or one specific subcommand
insta-monitis list all --style=[STYLE] # List all tests, sorted by id
insta-monitis list http --style=[STYLE] # List all http tests
insta-monitis list page --style=[STYLE] # List all full page load tests
Options:
[--style=STYLE] # Style of output, yaml:json:hash
# Default: yaml
~> insta-monitis list help all
Usage:
insta-monitis list all --style=[STYLE]
Options:
[--style=STYLE] # Style of output, yaml:json:hash
# Default: yaml
Description:
Using the API, list every single monitor of any type. Sorted by id
Add:
~> insta-monitis add
Commands:
insta-monitis add bulk --file=[FILE] # Via file, create one or many test(s)
insta-monitis add help [COMMAND] # Describe subcommands or one specific subcommand
insta-monitis add http # Interactively create a http test
insta-monitis add page # Interactively create a full page load test
~> insta-monitis add help bulk
Usage:
insta-monitis bulk --file=[FILE]
Options:
-f, [--file=FILE] # Filename to load
Description:
Load in a file full of test(s), use the API to created them in Monitis.
The --file option will only accept a .csv file. The .csv needs to contain the headers like so:
type,name,url,interval,timeout,locationIds,tag,checkInterval
http,this_is_a_http,http.com,,,1 8 10,http!,,,
fullpage,this_is_a_page,fullpage.com,,,1 8 10,fullpage!,1 1 1,,,
fullpage,asfd,asdf,asdf,9, ,9, , ,
Type is a required header, as is name, url, locationIds, and tag.
If type is fullpage, checkInterval is required as well and must match the locationIds.
locationIds and checkInterval should be ' ' seperated values.
Delete:
~> insta-monitis del
Commands:
insta-monitis del help [COMMAND] # Describe subcommands or one specific subcommand
insta-monitis del http --id=[ID] # Delete the http test with given Id
insta-monitis del page --id=[ID] # Delete the full page load test with given Id
Options:
-i, [--id=N] # Id of test
Search:
~> insta-monitis search
Commands:
insta-monitis search help [COMMAND] # Describe subcommands or one specific subcommand
insta-monitis search http --[OPTION]=[VALUE] --style=[STYLE] # Search all http tests
insta-monitis search page --[OPTION]=[VALUE] --style=[STYLE] # Search all fullpage tests
Options:
-s, [--style=STYLE] # Style of output, yaml:json:hash
# Default: yaml
-i, [--id=N] # Id of test
-n, [--name=NAME] # Name of test
-u, [--url=URL] # URL of test
-t, [--tag=TAG] # Tag of test(s)
Report:
~> insta-monitis report http -i 176633 -d 2
Issuing API requests for 2015-07-24..
Issuing API requests for 2015-07-23..
Issuing API requests for 2015-07-22..
~> insta-monitis report
Commands:
insta-monitis report help [COMMAND] # Describe subcommands or one specific subcommand
insta-monitis report http --[ID]=[N] --[DAYS]=[N] # Generate report for given http test
Options:
-i, [--id=N] # Id of test
-d, [--days=N] # How many days
# Default: 150
The report will create a .csv file in the HOME directory of the current user.
Development
After checking out the repo, run bin/setup
to install dependencies. Then, run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
to create a git tag for the version, push git commits and tags, and push the .gem
file to rubygems.org.
Contributing
- Fork it ( https://github.com/praymann/insta-catchpoint/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request