https://github.com/kgnzt/polyseerio-ruby
Official Polyseer.io SDK for Ruby.
https://github.com/kgnzt/polyseerio-ruby
alerting monitoring polyseer ruby ruby-on-rails
Last synced: 6 months ago
JSON representation
Official Polyseer.io SDK for Ruby.
- Host: GitHub
- URL: https://github.com/kgnzt/polyseerio-ruby
- Owner: kgnzt
- License: mit
- Created: 2016-09-26T22:37:05.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2017-01-03T21:12:27.000Z (over 9 years ago)
- Last Synced: 2025-02-26T04:23:35.477Z (over 1 year ago)
- Topics: alerting, monitoring, polyseer, ruby, ruby-on-rails
- Language: Ruby
- Homepage: https://polyseer.io
- Size: 218 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: History.md
- License: LICENSE
Awesome Lists containing this project
README

# Polyseer.io SDK for Ruby
The official Polyseer.io SDK for Ruby. Detailed API information can be found at (https://polyseer.io/documentation).
## About
Polyseer.io is an Integrated Development Platform that instantly
provides teams with the resources needed to build, support, and maintain world
class software products.
## Requirements
- Ruby
- gem
## Installation
To install, run:
gem install polyseerio
To add to your project Gemfile, insert:
gem 'polyseerio'
## Example
Be sure to check out the examples in /example.
## Environment Variables
Certain values can be set in environment variables:
* POLYSEERIO_TOKEN access-token used for API calls
* RAILS_ENV the current environment
* POLYSEERIO_LOG_LEVEL SDK logging level
## Usage
The SDK provides an agent that allows for immediate integration as well as
direct platform interactions.
Example: (Quick start)
include 'polyseerio'
client = Polyseerio.start
client.instance.fact('foo', 'bar').execute.value
Example: (SDK)
include 'polyseerio'
client = Polyseerio.make
client.Event.create(name: 'Testing').execute.value
## Design
All Polyseer.io SDK's make use of Promises for async calls. Promises allow for
delaying and chaining async work.
* Provides direct platform calls as well as a Polyseer.io Ruby agent.
* All client SDK calls return a Concurrent::Promise.
* Supports functional style programming.
* Supports object-oriented style programming.
* ORM style instances. E.g. environment.save(), alert.trigger();
* A resources environment can be deduced or explicitly passed to SDK calls through the options param.
* API calls made using the https:// protocol.
## Example
Be sure to check out the examples in /example.
## SDK Resources
Use of the SDK starts with the creation of a client. To construct a client
instance, you may call either Polyseerio.start or Polyseerio.make. Once a
client has been created you may use any of its resources.
### Polyseerio
* Polyseerio
* .`make(options = {}) ⇒ Polyseerio::Client`
* Create a client.
* `options (Hash)` see Polyseerio.start options.
- `:deduce (Boolean)` if the environment should be deduced when not supplied
- `:env (String)` environment variable that holds the current environment
- `:timeout (Integer)` integer containing number of ms to wait for server responses
- `:token (String)` an api token
- `:token_env (String)` if no token is provided, this environment variable will be checked
- `:upsert_env (Boolean)` if an environment cannot be found it will be created
- `:version (String)` api version to use
* .`start(options = {}) ⇒ Polyseerio::Client`
* Create a client and start an Agent.
* `options (Hash)`
- `:agent (Hash)` agent options (see client.start_agent options)
* `::Enum`
* `::Color (Hash)` platform color values
* `::Determiner (Hash)` expectation deteriner types
* `::Direction (Hash)` instance direction types
* `::Icon (Hash)` platform icon types
* `::Protocol (Hash)` alert protocol types
* `::Strategy (Hash)` instance attachment strategies
* `::Subtype (Hash)` instance subtypes
* `::Type (Hash)` resource types
### Polyseerio::Client
* client
* `.current_environment ⇒ client.Environment`
* Resolves the current environment **IF** it has been deduced.
* `.start_agent(options = {}) ⇒ Polyseerio::Client`
* Starts the Polyseer.io agent for this client.
* `options`
- `.attach (Boolean)`
- `.attach_strategy (Symbol)`
- `.name (String)` instance name (will be used as a unique id)
- `.description (String)` a description of this instance
- `.group (String)` what group this instance belongs to
- `.direction (String)` the monitoring direction (inbound) // force this
- `.subtype (Polyseerio::Enum::Subtype)` the instance subtype: periodic or long_running.
- `.expectation` will be upserted for this instance
- `.is_alive (Boolean)` create an expectation that this process is alive
- `.fact`
- `.engine (Boolean)` the current ruby engine
- `.gid (Boolean)` the group if othe process is running under
- `.launch_arguments (Boolean)` command used to launch the instance
- `.pid (Boolean)` the id of the process
- `.platform (Boolean)` the operating platform of
- `.ruby_version (Boolean)` the version of ruby being used
- `.uid (Boolean)` user id the process is running as
- `.metric`
- `.cpu (Boolean)` track user and system cpu usage
- `.memory (Boolean)` track memory usage
- `.uptime (Boolean)` track process uptime
- `.event`
- `.start (Boolean)` event notice when agent starts
- `.stop (Boolean)` event notice when agent stops
- `.process_event`
- `.exit (Boolean)` event notice on process exit
### Alert
* .Alert
* `.create(attributes = {}, options = {})`
* `.find(query = {}, options = {})`
* `.find_by_id(id, options = {})`
* `.find_by_name(name, options = {})`
* `.new(attributes = {}) ⇒ client.Alert`
* `.remove()`
* `.save()`
* `.trigger(payload = {})`
* `.remove(id, options = {})`
* `.trigger(id, payload, options = {})`
* `.update(id, updates, options = {})`
### Channel
* .Channel
* `.create(attributes = {}, options = {})`
* `.find(query = {}, options = {})`
* `.find_by_id(id, options = {})`
* `.find_by_name(name, options = {})`
* `.message(id, content, options = {})`
* `.new(attributes = {}) ⇒ client.Channel`
* `.message(content)`
* `.remove()`
* `.save()`
* `.remove(id, options = {})`
* `.update(id, updates, options = {})`
### Environment
* .Environment
* `.create(attributes = {}, options = {})`
* `.find(query = {}, options = {})`
* `.find_by_id(id, options = {})`
* `.find_by_name(name, options = {})`
* `.message(id, content, options = {})`
* `.new(attributes = {}) ⇒ client.Environment`
* `.message(content)`
* `.remove()`
* `.save()`
* `.remove(id, options = {})`
* `.update(id, payload = {}, options = {})`
### Event
* .Event
* `.create(attributes = {}, options = {})`
* `.find(query = {}, options = {})`
* `.find_by_id(id, options = {})`
* `.new(attributes = {}) ⇒ client.Event`
* `.save()`
### Expectation
* .Expectation
* `.check(id, options = {})`
* `.create(attributes = {}, options = {})`
* `.find(query = {}, options = {})`
* `.find_by_id(id, options = {})`
* `.find_by_name(name, options = {})`
* `.new(attributes = {}) ⇒ client.Expectation`
* `.check()`
* `.remove()`
* `.save()`
* `.remove(id, options = {})`
* `.update(id, updates, options = {})`
### Instance
* .Instance
* `.attach(options = {})`
* `.create(attributes = {}, options = {})`
* `.find(query = {}, options = {})`
* `.find_by_id(id, options = {})`
* `.find_by_name(name, options = {})`
* `.new(attributes = {}) ⇒ client.Instance`
* `.add_fact(key, resolver)`
* Add a fact to the attach monitoring loop.
* `key (symbol)`
* `resolver (string|number|block)`
* `.add_gauge(key, resolver)`
* Add a gauge to the attach monitoring loop.
* `key (symbol)`
* `resolver (string|number|block)`
* `.attach()`
* Start inbound monitoring.
* `.detach()`
* Terminate inbound monitoring.
* `.fact(key, value)`
* Send a one-off fact.
* `.gauge(key, value)`
* Send a one-off gauge metric.
* `.remove()`
* `.save()`
* `.remove(id, options = {})`
* `.update(id, updates, options = {})`
### Logic Block
* .LogicBlock
* `.create(attributes = {}, options = {})`
* `.execute(id, options = {})`
* `.find(query = {}, options = {})`
* `.find_by_id(id, options = {})`
* `.find_by_name(name, options = {})`
* `.new(attributes = {}) ⇒ client.LogicBlock`
* `.execute()`
* `.remove()`
* `.save()`
* `.remove(id, options = {})`
* `.update(id, updates, options = {})`
### Member
* .Member
* `.create(attributes = {}, options = {})`
* `.find(query = {}, options = {})`
* `.find_by_id(id, options = {})`
* `.new(attributes = {}) ⇒ client.Member`
* `.remove()`
* `.save()`
* `.remove(id, options = {})`
* `.update(id, updates, options = {})`
### Settings
* .Settings
* `.retrieve()`
* `.update(updates, options = {})`
### Task
* .Task
* `.create(attributes = {}, options = {})`
* `.find(query = {}, options = {})`
* `.find_by_id(id, options = {})`
* `.new(attributes = {}) ⇒ client.Task`
* `.remove()`
* `.save()`
* `.remove(id, options = {})`
* `.update(id, updates = {}, options = {})`
## Building
To test, build, and install locally:
make
To build and install:
make build
## Testing
Testing requires:
- Make
Install gems locally by running:
make install
Then run a command below based on what test suite you need to run.
### Lint
make lint
### Unit
make unit-test
### Integration
make integration-test
### Validation
Requires the environment to have a root level access-token defined as:
export POLYSEERIO_TOKEN=a-test-root-key
make validation-test
### All
make test
## Debugging
Set the environment variable POLYSEERIO_LOG_LEVEL to debug in order to get
detailed logging information.