Project

zeusclient

0.0
No commit activity in last 3 years
No release in over 3 years
Client for Cisco Zeus. This allows users to sendand receive data to and from Cisco Zeus.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
 Dependencies

Development

~> 3.0.0
~> 0.45.0
~> 0.8.0
~> 1.8
~> 10.0

Runtime

~> 1.8.0
 Project Readme

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