https://github.com/stackify/stackify-api-ruby
Stackify API for Ruby
https://github.com/stackify/stackify-api-ruby
Last synced: 8 months ago
JSON representation
Stackify API for Ruby
- Host: GitHub
- URL: https://github.com/stackify/stackify-api-ruby
- Owner: stackify
- License: apache-2.0
- Created: 2014-06-19T13:44:56.000Z (about 12 years ago)
- Default Branch: master
- Last Pushed: 2024-06-20T18:53:19.000Z (about 2 years ago)
- Last Synced: 2024-06-21T12:40:34.728Z (about 2 years ago)
- Language: Ruby
- Size: 126 KB
- Stars: 3
- Watchers: 13
- Forks: 12
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# stackify-api-ruby
[](http://badge.fury.io/rb/stackify-api-ruby)
Stackify Logs and Metrics API for Ruby.
Errors and Logs Overview:
http://support.stackify.com/errors-and-logs-overview/
Sign Up for a Trial:
http://www.stackify.com/sign-up/
## Installation and Configuration
Requirements: Ruby 1.9/2.0/2.1, Rails 3.x/4.x (optional)
### Rails
Add the stackify gem to your Gemfile. In Gemfile:
gem 'stackify-api-ruby'
Run the bundle command to install it:
$ bundle
or install it manually:
$ gem install stackify-api-ruby
After you install stackify-api-ruby you need to run the generator:
$ rails g stackify --api_key=your_api_key
The generator creates a file 'config/initializers/stackify.rb' configuring stackify-api-ruby with your API key. You can change default settings there.
### Non-Rails
For using stackify-api-ruby gem within any Ruby application add to top of your main file:
require 'stackify-api-ruby'
After that you need to make base configuration:
Stackify.setup do |config|
config.api_key = "your_api_key"
config.env = :development
config.app_name = "Your app name"
end
## Optional Configuration
Gem has 3 modes of work - "both", "logging", "metrics". Mode "both" turns on both parts of gem - logging and metrics.
If you need ONLY logging or metrics use "logging" or "metrics" mode accordingly.
config.mode = :metrics
If you want to use proxy for sending request, you can do it in such way:
config.proxy = { uri: '127.0.0.1:8118', user: 'user_name', password: 'some_password' }
## Log API Usage
### Rails
stackify-api-ruby starts with start of Rails. Every error, which occurs within your application, will be caught and sent to Stackify automatically. The same situation with logs - you just use the Rails logger as usual:
Rails.logger.info "Some log message"
If you want to redefine logger, you should add
config.logger = ::Stackify::LoggerProxy.new(ActiveSupport::Logger.new(Rails.root.join('log', "#{Rails.env}.log")))
to your config/environments/%environment%. Note: in this case Stackify#config.log_level will affect entire system.
### Non-Rails
After logs configuring you should wrap up your logger:
logger = Logger.new('mylog.log')
logger = Stackify::LoggerProxy.new(logger)
And last thing you need to do - call method "run":
Stackify.run #remember that this call is running in the background of your main script
## Metrics API Usage
There are four different types of metrics:
- **Gauge**: Keeps track of the last value that was set in the current minute
Stackify::Metrics.set_gauge "MyCategory", "MyGauge", 100
- **Counter**: Calculates the rate per minute
Stackify::Metrics.count "MyCategory", "MyCounter"
- **Average**: Calculates the average of all values in the current minute
Stackify::Metrics.average "MyCategory", "AverageSpeed", 200
- **Timer**: Calculates the average elapsed time for an operation in the current minute
t = Time.now
Stackify::Metrics.time "MyCategory", "ElapsedTime", t
# or
Stackify::Metrics.time_duration "MyCategory", "ElapsedTime", 5.seconds
- **Counter and Timer**: Composite of the Counter and Timer metrics for convenience
t = Time.now
Stackify::Metrics.count_and_time "Metric", "CounterWithTime", t
We can configure every metric with settings:
settings = Stackify::Metrics::MetricSettings.new
settings.autoreport_zero_if_nothing_reported = true
# or
settings.autoreport_last_value_if_nothing_reported = true
Stackify::Metrics.set_gauge "MyCategory", "MyGauge", 100 , settings
Note, "autoreport_last_value_if_nothing_reported" property has influence only on "average" metric.
### **Real User Monitoring (RUM)**
Real user monitoring injects a script tag containing the [RUM JS](https://stackify.com/retrace-real-user-monitoring/) that is responsible for capturing information about the http requests on the browser. This approach is manual and needs to be configured.
#### RUM - Setup
```ruby
# Configuration - Standard API
Stackify.setup do |config|
...
config.rum_key = "YourRumKey"
end
# Use this to apply on views
Stackify.rum.insert_rum_script
```
## Troubleshooting
If there are problems, you can enable internal logging of the stackify-api-ruby project. Uncomment out the config.logger and config.logger.level lines in the 'config/initializers/stackify.rb' file:
```
config.logger = Logger.new(Rails.root.join("log", "stackify.log"))
config.logger.level = Logger::DEBUG
```