polyseerio

0.0.23 • Public • Published

Alt text

Polyseer.io SDK for Node.js

The official Polyseer.io SDK for Node.js. 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

  • Node.js (see package.json for supported versions)
  • NPM

Installation

To install inside a project, run:

npm install polyseerio --save

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
  • NODE_ENV the current environment
  • POLYSEERIO_LOG_LEVEL SDK logging level default error

Usage

This SDK provides direct platform interactions as well as a configurable agent that can be used for immediate integration.

Example: (Quick start agent)

return require('polyseerio').start().then(client ⇒ { console.log('ok') });

Example: (Configured quick start)

const polyseerio = require('polyseerio');

return polyseerio.start({
    env: 'APP_ENV',
    environment: 'testing',
    agent: {
      id: 'my-instance-id',
      attach_strategy: polyseerio.Strategy.ID
    }
  }).
  then(client ⇒ {
    console.log('ok');
  });

Example: (SDK only)

const polyseerio = require('polyseerio'),
      client = polyseerio({ token: 'my-access-token' }),
      { Event, 
        Alert,
        Instance } = client;

return Instance.attach({
  name: 'my-example-instance',
  strategy: Instance.attach.Strategy.FALLBACK
}).then(instance ⇒ {
  console.log(`Manual instance attached as: ${instance.get('id')}.`);

  return Event.create({
    name: `Attached ${instance.get('name')}.`,
    color: polyseerio.Color.GREEN,
    icon: polyseerio.Icon.CHECK,
    description: `ID: ${instance.get('id')}`
  });
}).then(event ⇒ {
  console.log(`Event: ${event.get('id')}, was triggered.`);

  return Alert.findByName('instance-attached');
}).then(alert ⇒ {
  return alert.trigger({
    meta: {
      notice: 'Just wanted to alert you to this.'
    }
  });
}).catch(console.log);

Design

  • Provides direct platform calls via client a well as a Polyseer.io Node.JS agent.
  • All client SDK calls return a Promise.
  • Supports object-oriented style programming.
    • ORM style instances. E.g. environment.save(), alert.trigger(), instance.gauge();
  • A resources environment can be deduced or explicitly passed to SDK calls through the options param.
  • Missing environment's will be upserted by default.
  • API calls are made using the https:// protocol.

SDK Resources

Use of the SDK begins with construction of a client. To construct a client instance, call the required polyseerio module.

polyseerio

  • polyseerio
    • (options = {}) ⇒ Client
      • options (Object)
        • .deduce (Boolean) if the environment should be deduced from the environment when not supplied
        • .env (String) environment variable holding current environment
        • .timeout (Number) integer containing number of ms to wait for server responses
        • .token (String) environment variable holding current environment
        • .token_env (String) if no token is provided this environment variable will be checked for one
        • .upsert_env (Boolean) if an environment should be created when it cannot be found
        • .version (String) api version to use
    • .start(options = {}) ⇒ Client generate a client and start an agent
      • options (Object) see () options, plus the additional below can be passed
        • .agent (Object) agent options (see client.startAgent options)
    • .Color (Object) platform color types
    • .Determiner (Object) expectation determiner types
    • .Direction (Object) instance direction types
    • .Icon (Object) platform icon types
    • .Protocol (Object) alert protocol types
    • .Strategy (Object) instance attachment strategies
    • .Subtype (Object) instance subtypes
    • .Type (Object) resource types

client

  • client
    • .getCurrentEnvironment() ⇒ client.Environment Resolves the current environment IF it has been deduced.
    • .startAgent(options = {}) ⇒ client Starts the Polyseer.io agent.
      • 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
        • .agent_retry (Number) number of ms to retry agent attach when initial attach fails
        • .direction (polyseerio.Direction) the monitoring direction (inbound) // force this
        • .subtype (polyseerio.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
          • .architecture (Boolean) the operating system architecture
          • .cpu_count (Boolean) the number of cores
          • .endianess (Boolean) if the architecture if little or big endian
          • .free_memory (Boolean) the current free memory
          • .gid (Boolean) the group if othe process is running under
          • .home_directory (Boolean) current user's home directory
          • .hostname (Boolean) the system hostname
          • .launch_arguments (Boolean) command used to launch the instance
          • .node_version (Boolean) the version of node being used
          • .pid (Boolean) the id of the process
          • .platform (Boolean) the operating platform of
          • .title (Boolean) the title of the process
          • .uid (Boolean) user id the process is running as
          • .uptime (Boolean) the uptime of the process
          • .v8_version (Boolean) the version of v8
        • .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
          • .SIGHUP (Boolean) event notice when process receives SIGHUP
          • .SIGINT (Boolean) event notice when process receives SIGINT
          • .SIGTERM (Boolean) event notice when process receives SIGTERM
          • .exit (Boolean) event notice on process exit
          • .uncaughtException (Boolean) event notice on uncaught execptions
          • .unhandledRejection (Boolean) event notice on unhandled promise rejections
          • .warning (Boolean) event notice on process warning
    • Contains all of the enum values exported on polyseerio as well.

Alert

  • .Alert
    • .create(attributes = {}, options = {}) ⇒ client.Alert
    • .find(query = {}, options = {}) ⇒ client.Alert
    • .findById(id, options = {}) ⇒ [client.Alert]
    • .findByName(name, options = {}) ⇒ client.Alert
    • .remove(id, options = {})
    • .trigger(id, payload = {}, options = {}) ⇒ client.Alert
    • .update(id, updates = {}, options = {}) ⇒ client.Alert
    • new Alert(attributes = {})
      • .get(key) ⇒ Mixed
      • .remove() ⇒ this
      • .save() ⇒ this
      • .set(key, value, default = undefined) ⇒ this
      • .setProperties(object = {}) ⇒ this
      • .trigger(payload = {}) ⇒ this

Channel

  • .Channel
    • .create(attributes = {}, options = {})
    • .find(query = {}, options = {})
    • .findById(id, options = {})
    • .findByName(name, options = {})
    • .message(id, content, options = {})
    • .remove(id, options = {})
    • .update(id, updates = {}, options = {})
    • new Channel(attributes = {})
      • .get(key) ⇒ Mixed
      • .message(content)
      • .remove()
      • .save() ⇒ this
      • .set(key, value, default = undefined) ⇒ this
      • .setProperties(object = {}) ⇒ this

Environment

  • .Environment
    • .create(attributes = {}, options = {})
    • .find(query = {}, options = {})
    • .findById(id, options = {})
    • .findByName(name, options = {})
    • .message(id, content, options = {})
    • .remove(id, options = {})
    • .update(id, payload = {}, options = {})
    • new Environment(attributes = {})
      • .get(key) ⇒ Mixed
      • .message(content)
      • .remove()
      • .save() ⇒ this
      • .set(key, value, default = undefined) ⇒ this
      • .setProperties(object = {}) ⇒ this

Event

  • .Event
    • .create(attributes = {}, options = {})
    • .find(query = {}, options = {})
    • .findById(id, options = {})
    • new Event(attributes = {})
      • .get(key) ⇒ Mixed
      • .save() ⇒ this
      • .set(key, value, default = undefined) ⇒ this
      • .setProperties(object = {}) ⇒ this

Expectation

  • .Expectation
    • .check(id, options = {})
    • .create(attributes = {}, options = {})
    • .find(query = {}, options = {})
    • .findById(id, options = {})
    • .findByName(name, options = {})
    • .remove(id, options = {})
    • .update(id, updates = {}, options = {})
    • new Expectation(attributes = {})
      • .check()
      • .get(key) ⇒ Mixed
      • .remove()
      • .save() ⇒ this
      • .set(key, value, default = undefined) ⇒ this
      • .setProperties(object = {}) ⇒ this

Instance

  • .Instance
    • .attach(options = {})
    • .create(attributes = {}, options = {})
    • .find(query = {}, options = {})
    • .findById(id, options = {})
    • .findByName(name, options = {})
    • .remove(id, options = {})
    • .update(id, updates = {}, options = {})
    • new Instance(attributes = {})
      • .addFact()
      • .addGauge()
      • .attach()
      • .fact()
      • .gauge()
      • .get(key) ⇒ Mixed
      • .remove()
      • .save() ⇒ this
      • .set(key, value, default = undefined) ⇒ this
      • .setProperties(object = {}) ⇒ this

Logic Block

  • .LogicBlock
    • .create(attributes = {}, options = {})
    • .execute(id, options = {})
    • .find(query = {}, options = {})
    • .findById(id, options = {})
    • .findByName(name, options = {})
    • .remove(id, options = {})
    • .update(id, updates = {}, options = {})
    • new LogicBlock(attributes = {})
      • .execute()
      • .get(key) ⇒ Mixed
      • .remove()
      • .save() ⇒ this
      • .set(key, value, default = undefined) ⇒ this
      • .setProperties(object = {}) ⇒ this

Member

  • .Member
    • .create(attributes = {}, options = {})
    • .find(query = {}, options = {})
    • .findById(id, options = {})
    • .remove(id, options = {})
    • .update(id, updates = {}, options = {})
    • new Member(attributes = {})
      • .get(key) ⇒ Mixed
      • .remove()
      • .save() ⇒ this
      • .set(key, value, default = undefined) ⇒ this
      • .setProperties(object = {}) ⇒ this

Settings

  • .Settings
    • .retrieve()
    • .update(updates = {})

Task

  • .Task
    • .create(attributes = {}, options = {})
    • .find(query = {}, options = {})
    • .findById(id, options = {})
    • .remove(id, options = {})
    • .update(id, updates = {}, options = {})
    • new Task(attributes = {})
      • .get(key) ⇒ Mixed
      • .remove()
      • .save() ⇒ this
      • .set(key, value, default = undefined) ⇒ this
      • .setProperties(object = {}) ⇒ this

Contributing

Always welcome to add, just open a PR.

Testing

Testing requires:

  • Make
  • Grunt
  • nvm (if doing version testing)

Install node modules locally by running:

npm 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 ROOT_KEY=a-test-root-key

make validation-test

Version testing

make version-testing

To test specific versions:

make version-testing SUPPORTED=4.0.0 5.0.0 5.2.0

All

make test

Debugging

In order to debug an issue is can be helpful to enable debug logging. To do so set the environment variable: POLYSEERIO_LOG_LEVEL to debug.

Package Sidebar

Install

npm i polyseerio

Weekly Downloads

1

Version

0.0.23

License

MIT

Last publish

Collaborators

  • nicolas.feigenbaum