1.1.1 • Published 9 years ago

pandamonium v1.1.1

Weekly downloads
3
License
MIT
Repository
github
Last release
9 years ago

pandamonium npm.io

npm.io

The panda-themed pseudomonitoring tool. Allows you to randomly create entities, checks, alarms, notification plans and suppressions in Rackspace Cloud Monitoring.

Installation

The best way to install pandamonium is with NPM.

$ npm install -g pandamonium

Supported commands

Pandamonium exposes all commands through a single binary, pm. For NPM installs this will be under your NPM prefix. When developing Pandamonium, you can find the binary at ./bin/pm from the root of the repo.

All pandamonium commands take the following form:

$ pm [TYPE] create [OPTIONS]

Pandamonium can be used to create, but not to destroy. This is important because you can quickly overrun your account's Cloud Monitoring limits for checks or alarms. To view, edit and delete the resources that Pandamonium provisions, go to the UI at Rackspace Cloud Intelligence or roll your own API client.

Important: pandamonium is a stupid tool. It doesn't understand human-readable labels, and needs raw object IDs from Cloud Monitoring when you specify Cloud Monitoring objects to any pandamonium command. For instance, you need to use en123ABC instead of cloud-server-01. When you specify a list of Cloud Monitoring objects to pandamonium, use a comma-separated list of object IDs. For example, this command specifies two entities and two alarms to pm suppressions create:

$ pm suppressions create --entities=en123ABC,en456DEF --alarms=al321BAZ,al911FOO

If you have a Cloud Monitoring object and don't know the ID, Cloud Intelligence is the best place to look it up.

Entities

$ pm entities create [-n COUNT]

Creates entities with random labels and IP addresses. To create many entities at once, pass the -n or --count option. This is an integer specifying how many entities to create. For instance,

$ pm entities create -n 500

creates 500 entities.

Checks

$ pm checks create [-e, --entity ENTITY] [--spread] [-n COUNT]

Creates checks with random labels, check types, check details and host names. To specify an entity to create checks under, pass the -e or --entity option. To create many checks at once, pass the -n or --count option as an integer number of checks to create. The --spread option controls how the checks will be distributed in the case where ENTITY is not specified and COUNT > 1. In this case, if --spread is passed, checks will be distributed randomly to all of the user's entities; otherwise, pandamonium will randomly select one entity and create all the checks under it.

Alarms

$ pm alarms create [-e, --entity ENTITY] [-c, --checks CHECKS] [-p, --notification_plans PLANS] [--spread] [-n COUNT]

Creates alarms with random labels and alarm criteria. To specify an entity to create alarms under, pass the -e or --entity option. To specify a list of check IDs to associate alarms with, pass the -c or --checks option. To specify a list of notification plans to use, pass the -p or --notification_plans option. To create many alarms at once, pass the -n or --count option as an integer number of alarms to create. The --spread option controls how the alarms will be distributed in the case where CHECKS is not specified or is a list of length greater than 1. In this case, --spread specifies that alarms should be distributed randomly to all checks in the list or all checks associated with the entity that is specified or that pandamonium chooses (when the entity is not specified).

Notifications

$ pm notifications create [-n COUNT]

Creates notifications with random labels, types and details. To create many notifications at once, specify the -n or --count option as an integer number of notifications to create.

Notification plans

$ pm notification_plans create [--notifications NOTIFICATIONS] [-n COUNT]

Creates notification plans with random labels. To specify a list of notifications to use in each plan, pass the --notifications option. If this option is not passed a random selection of notifications will be used for each new plan. To create many notification plans at once, pass the -n or --count option as an integer number of notification plans to create.

Suppressions

$ pm suppressions create [--entities ENTITIES] [--alarms ALARMS] [--checks CHECKS] [--notification_plans PLANS] [--start_time START] [--end_time END] [--spread] [-n COUNT]

Creates suppressions with random labels. Suppressables are passed in using the --entities, --alarms, --checks, and --notification_plans options. Arguments for these options should be lists of IDs. If no suppressables are specified and the --spread option is passed, suppressions are applied randomly to the user's entities. If no suppressables are specified and the --spread option is not passed, a random entity is chosen and all suppressions are applied to that entity. If --start_time is present, suppressions will start at START, and if --end_time is present, suppressions will end at END. Otherwise, a random time bound will be chosen. To create many suppressions at once, pass the -n or --count option as an integer number of suppressions to create.

Configuration

By default, pandamonium looks for a .pmrc file in your home directory. You can set the environment variable PM_SETTINGS that contains a file path that pandamonium should use instead. This file should be a JSON object containing the following contents:

  • username - Your Rackspace username. This is a required option.
  • api_key - Your Rackspace API key. This is also required.
  • identity_endpoint - An alternative identity endpoint to use instead of the Rackspace default identity endpoint. This is useful for running pandamonium against alternative backends such as Mimic. If not set, pandamonium will use Rackspace Cloud Identity.
  • tenant_id - Your Rackspace account number. This is not necessary when authenticating against Rackspace Cloud Identity, but it helps alternative backend services generate the correct endpoints. In particular, it is necessary when running both pandamonium and Cloud Intelligence against Mimic.

Here's an example.

{
  "username": "PandaAwesome",
  "api_key": "ca3ec4b27bb98d54bda97627bb1b447e",
  "identity_endpoint": "http://localhost:8900/identity/v2.0/tokens",
  "tenant_id": "123456"
}

Contributing

Pull requests are welcome! Just do your best to follow the existing conventions and document any new features or behavior you add.

We use jshint for linting and Mocha to run unit tests. You can check both in development by running npm test. If you make sure your code is lint free and add unit tests for any new features or bug fixes you submit, it'll help me merge your PR faster!

License

MIT