Skip to content

CiscoZeus/ruby-zeusclient

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ruby Zeus Client license Build Status

Alt text

Ruby client for Cisco Zeus. This allows us to send and recieve data to and from Zeus.

Installation

Add this line to your application's Gemfile:

gem 'zeusclient'

And then execute:

$ bundle

Or install it yourself as:

$ gem install zeusclient

Usage

require 'zeus/api_client'
zeus_client = Zeus::APIClient.new({
    token: "your_token_here",
    endpoint: "zeus_endpoint_here"
})

Since version 0.3.2 Zeus support either user token + full bucket name (org_name/bucket_name) or access token For using user token + full bucket name (org_name/bucket_name), please add bucket("bucket_fullname") to the method chain, for example:

result = zeus_client.bucket("your_org_name/your_bucket_name").list_metrics(
# your parameters here
)

If you just use access token, just use the method you need directly, for example:

result = zeus_client.list_metrics()

List All Metrics

result = zeus_client.bucket("your_org_name/your_bucket_name").list_metrics(
  # optional parameters
  {
    regex: "metric.name*" # regex for filtering metrics names
    from_date: "2016-06-12", # YYYY-MM-DD
    to_date: "2017-12-20", # YYYY-MM-DD
    aggregator_function: "sum", # Aggregator function to be applied to the metric values.
                                # Available options. count, min, max, sum, mean, mode, median
    group_interval: "100m",     # Interval for grouping, when applying aggregations via the aggregator_function parameter.
                                # The aggregator_function parameter must be specific for this parameter to work.
                                # Examples: 1000s, 100m, 10h, 1d , 1w. Use 's' for seconds, 'm' for minutes, 'h' for hours,
                                # 'd' for days and 'w' for weeks.
    filter_condition: "column1 > 0", # Filters to be applied to metric values.
                                     # Examples: "column1 > 0", "column1 > 50 AND column2 = 10".
    offset: 100,
    limit: 10
  }
)
p result.code      # 200
p result.success?  # true
p result.data      # => {}

Get Metric

result = zeus_client.bucket("your_org_name/your_bucket_name").get_metrics( # same optional arguments as list_metrics)
p result.code      # 200
p result.success?  # true
p result.data      # => {}

Push Metric

result = zeus_client.bucket("your_org_name/your_bucket_name").send_metrics([{point: {value: 1, ...}}, ...])
p result.code      # 200
p result.success?  # true
p result.data      # => {}

Delete metric

result = zeus_client.bucket("your_org_name/your_bucket_name").delete_metrics()
p result.code      # 200
p result.success?  # true
p result.data      # => {}

Get logs

result = zeus_client.bucket("your_org_name/your_bucket_name").get_logs(
  "log_name_here",
  #optional parameters
  {
    attribute_name: "cpu", # name of the attribute within the log to be searched
    pattern: "memory.*", # a pattern for name filtering
    from_date: "2016-06-12", # YYYY-MM-DD
    to_date: "2017-12-20", # YYYY-MM-DD
    offset: 200,
    limit: 10
  }
)
p result.code      # 200
p result.success?  # true
p result.data      # => {}

Push logs

result = zeus_client.bucket("your_org_name/your_bucket_name").send_logs([{},{}, ...])
p result.code      # 200
p result.success?  # true
p result.data      # => {}

Get alerts

result = zeus_client.bucket("your_org_name/your_bucket_name").get_alerts()
p result.code      # 200
p result.success?  # true
p result.data      # => {}

Create alert

result = zeus_client.bucket("your_org_name/your_bucket_name").create_alert(
  {
    alert_name: "name of the alert",
    username: "username associated with alert",
    alert_expression: "cpu.value > 80", # expression to match alert against
    # optional params
    alerts_type: "metrics", # Either metric or log
    alert_severity: "S1", # severity of the alert, S1-S5
    metric_name: "name of the metrics associated with the alert",
    emails: "email@provider.com", # email to be notified when alert triggers
    status: "active", # either active or disabled
    frequency: 60, # frequency for alert to be checked
  }
)
p result.code      # 201
p result.success?  # true
p result.data      # => {}

Modify alert

result = zeus_client.bucket("your_org_name/your_bucket_name").modify_alert(
  alert_id,
  {
    # parameter you wish to modify
    alert_name: "name of the alert",
    username: "username associated with alert",
    alert_expression: "cpu.value > 80", # expression to match alert against
    alerts_type: "metric", # Either metric or log
    alert_severity: "S1", # severity of the alert, S1-S5
    metric_name: "name of the metrics associated with the alert",
    emails: "email@provider.com", # email to be notified when alert triggers
    status: "active", # either active or disabled
    frequency: 60, # frequency for alert to be checked
  }
)
p result.code      # 200
p result.success?  # true
p result.data      # => {}

Delete alert

result = zeus_client.bucket("your_org_name/your_bucket_name").delete_alert(alert_id)
p result.code      # 204
p result.success?  # true
p result.data      # => {}

Get triggered alerts

result = zeus_client.bucket("your_org_name/your_bucket_name").triggered_alerts()
p result.code      # 200
p result.success?  # true
p result.data      # => {}
Get triggered alerts

Get triggered alerts in the last 24 hours

result = zeus_client.bucket("your_org_name/your_bucket_name").triggered_alerts_last_24_hours()
p result.code      # 200
p result.success?  # true
p result.data      # => {}

For more details, refer to this documentation

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.

For development, we are using ruby 2.4.1.

Contributing

  1. Fork it ( https://github.com/CiscoZeus/zeusclient/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request