Skip to main content
Every Bronto resource (datasets, monitors, API keys, and the rest) has a command, and they all take the same verbs.

Listing, inspecting, and changing resources

The pattern

For example:
At a terminal, list prints a table of the main columns and get prints the whole object as JSON. Exceptions: no get for parsers, api-keys, forward-configs, webhooks, slack, monitors downtimes; no update for metrics, exports. collections, log-views, and permissions are list-only, and metrics is read-only (list and get, plus top-keys). The generated command reference lists the exact verbs for each resource.

Names work wherever ids do

Every command that takes an id also takes a unique name:
  • Datasets resolve by name, or by collection/name when the name exists in more than one collection.
  • Users resolve by email.
  • Roles resolve by id or display_name. System roles have readable ids such as Admin and ReadOnly.
  • Monitors, dashboards, and the rest resolve by name. Quote names with spaces.
If a name matches more than one resource, the command fails with exit code 2 and lists the matching ids.

Creating and updating

create and update build the request body from repeated -f key=value flags. A value that parses as JSON keeps its type (number, boolean, array, or object). Anything else is sent as a string:
For larger bodies, pass a JSON file with --input, or --input - to read stdin. -f and --input can’t be combined.
The CLI sends the body unchanged, so use the fields the Bronto API expects for that resource. The example in each command’s help (bronto <resource> create --help) lists the fields the API requires. Updates to monitors, monitors templates, monitors downtimes, widgets, datasets, forward-configs, webhooks, slack, and roles use HTTP PUT, which replaces the whole object. Send every field you want to keep, not only the one you change. A few other updates need more than the changed field too:
  • groups update needs both name and description. The API clears whichever one you leave out, so the CLI refuses an update without both.
  • datasets update needs both collection and dataset, and roles update needs both display_name and permissions. The CLI refuses an update without them.
  • dashboards update needs name (or a layout). A description is ignored.
  • saved-searches update needs name, log_ids, and search_details.

Deleting

delete asks for confirmation at a terminal. Without a terminal it can’t ask, so it fails with usage_confirmation_required (exit code 2) unless you pass --yes:

Preview changes with —dry-run

--dry-run works on every command that changes something. It changes nothing, but reads still run, so names resolve and an unknown name fails the same way it would without --dry-run. Every command that changes something prints the request it would send as a JSON plan on stdout: method, path, and body. That includes delete and action verbs such as groups add-members, monitors mute, and users deactivate. A name you pass shows up as the id it resolved to in the plan’s path. delete also skips its confirmation prompt, because nothing is deleted.

Commands beyond CRUD

A few resources have extra verbs:

Assign a parser to a dataset

bronto datasets parser shows or changes which parser a dataset uses:

Metric attribute keys

bronto metrics top-keys <metric> lists the attribute keys seen on a metric, the metrics counterpart of bronto fields:

What uses a dataset

bronto datasets monitors and bronto datasets dashboards list the monitors and dashboards that query a dataset. Check them before you delete or rename the dataset. They print the same columns as bronto monitors list and bronto dashboards list:

Test a forwarding destination

Log forwarding copies events to an S3 bucket. bronto forward-configs test has Bronto write and delete a test object there, so you can check the bucket policy before you create a forward config, or after you change it. Name an existing forward config, or pass --bucket (with --prefix and --storage-class if needed). Flags override the saved config’s fields:
If Bronto can’t write to the bucket, the command exits 1 with forward_destination_failed.

API keys

bronto api-keys create is your one chance to copy a new key. Its output contains the full key (<id>.<secret>), including the JSON it prints when piped, and the CLI reminds you on stderr to store it. Bronto never returns the secret part again: list shows only the key’s id part. bronto api-keys list masks that id part in every output format, JSON included, so it doesn’t leak into CI logs. Pass --reveal to see it in full.

Usage

bronto usage shows your organization’s billable ingestion volume over a period (default 7d). It doesn’t cover search or export usage:
For per-dataset numbers, call the API directly with bronto api GET /usage/organizations/logs (see the api command).