Quick Start

Requirements

SkyWalking Ruby agent requires SkyWalking 8.0+ and Ruby 3.0+

Installing the gem

The Ruby agent’s gem is available from RubyGems as skywalking, we recommend you install and manage the skywalking gem dependency with Bundler, add the following line to your Gemfile, then run bundle install to install the gem.

# Gemfile
source "https://rubygems.org"

gem "skywalking"

Besides, you can also make installation as simple as gem install skywalking.

Installing from Source Code

Download the source tar from the official website, and run the following commands to build from source

Make sure you have Ruby 3.0+ and the gem command available

tar -zxf skywalking-ruby-src-<version>.tgz
cd skywalking-ruby-src-<version>
gem build skywalking.gemspec

If successful, the following will be displayed:

  Successfully built RubyGem
  Name: skywalking
  Version: <version>
  File: skywalking-<version>.gem

Then you can use skywalking-<version>.gem to your gemfile.

Getting started with Rails

You need to manually add Skywalking.start under config/initializers directory.

Optionally the command bundle exec rails generate skywalking:start, will create a config file config/initializers/skywalking.rb, and then you can configure the start parameters.

Getting started with Sinatra

You can list gem 'skywalking' after sinatra in your Gemfile and use Bundler.require during initialization or calling require 'skywalking' after sinatra gem is loaded, that is, skywalking gem needs to be after the other gems you require (e.g. redis, elasticsearch), like the following code:

require 'redis'
require 'sinatra'
require 'skywalking'

Skywalking.start

get '/sw' do
  "Hello, SkyWalking!"
end

Configuration

You can configure the SkyWalking Ruby agent in various ways, the Ruby agent follows this order of precedence for configuration:

  • Defaults (please see DEFAULTS)
  • Arguments to Skywalking.start
  • Configuration file (e.g. conifg/skywalking.yml)
  • Environment variables

The following is an example of configuration at start:

Skywalking.start(
  service_name: 'sw-srv',
  instance_name: 'sw-inst',
  collector_backend_services: 'oap:11800'
)

The following is an example of a configuration file:

common: &defaults
  service_name: Ruby-Agent-Common
  log_level: debug

development:
  <<: *defaults
  service_name: Ruby-Agent-Development

test:
  <<: *defaults
  service_name: Ruby-Agent-Test

production:
  <<: *defaults
  service_name: Ruby-Agent-Production

The following lists all the configuration options:

key environment key default value description
service_name SW_AGENT_SERVICE_NAME Your_ApplicationName The name of the service which showed in UI.
instance_name SW_AGENT_INSTANCE_NAME Your_InstanceName To obtain the environment variable key for the instance name, if it cannot be obtained, an instance name will be automatically generated.
namespace SW_AGENT_NAMESPACE Not set Namespace represents a subnet, such as kubernetes namespace, or 172.10..
environment SW_AGENT_ENVIRONMENT Not set The name of the environment this service is deployed in
collector_backend_services SW_AGENT_COLLECTOR_BACKEND_SERVICES 127.0.0.1:11800 Collector SkyWalking trace receiver service addresses.
config_file SW_AGENT_CONFIG_FILE Not set The absolute path to the configuration file, if empty, it will automatically search for config/skywalking.yml in the root directory.
log_file_name SW_AGENT_LOG_FILE_NAME skywalking The name of the log file.
log_file_path SW_AGENT_LOG_FILE_PATH Not set The path to the log file.
log_level SW_AGENT_LOG_LEVEL info The log level.
disable_plugins SW_AGENT_DISABLE_PLUGINS Not set The plugins to disable, multiple names should be split by comma, e.g. ‘redis5,elasticsearch’.
report_protocol SW_AGENT_REPORT_PROTOCOL grpc The protocol to use for reporting.
re_ignore_operation SW_AGENT_RE_IGNORE_OPERATION Not set Ignore specific URL paths.
instance_properties_json SW_AGENT_INSTANCE_PROPERTIES_JSON Not set A custom JSON string to be reported as service instance properties, e.g. {"key": "value"}.
collector_heartbeat_period SW_AGENT_COLLECTOR_HEARTBEAT_PERIOD 30 he agent will send heartbeat to OAP every collector_heartbeat_period seconds.
properties_report_period_factor SW_AGENT_PROPERTIES_REPORT_PERIOD_FACTOR 10 The agent will report service instance properties every collector_heartbeat_period * properties_report_period_factor seconds.
max_queue_size SW_AGENT_MAX_QUEUE_SIZE 10000 The maximum queue size for reporting data.