From b9b8e73b9e942cf6bde4b0baf264290b36599c7c Mon Sep 17 00:00:00 2001 From: Zixin Zhou Date: Mon, 13 Jan 2025 15:46:41 +0800 Subject: [PATCH] Polish the code and add docs --- CHANGELOG.md | 1 + docs/README.md | 4 +- docs/en/agent/plugins.md | 10 ++ .../how-to-release.md | 9 +- docs/en/setup/configuration.md | 0 docs/en/setup/quick-start.md | 106 ++++++++++++++++ .../publish-docker.yaml => docs/menu.yml | 48 +++----- examples/rails-demo/README.md | 9 -- .../generators/skywalking/start_generator.rb | 47 ++++++++ .../templates/skywalking_initializer.rb | 17 +-- lib/skywalking/agent.rb | 10 +- lib/skywalking/configuration.rb | 85 ++++++++----- lib/skywalking/environment.rb | 114 ++++++++++++++++-- lib/skywalking/log/logger.rb | 2 +- lib/skywalking/tracing/exit_span.rb | 2 +- lib/skywalking/tracing/span_context.rb | 2 +- skywalking.gemspec | 2 +- spec/fixtures/agent.yaml | 23 ++-- spec/skywalking/config_spec.rb | 2 +- 19 files changed, 368 insertions(+), 125 deletions(-) create mode 100644 docs/en/agent/plugins.md delete mode 100644 docs/en/setup/configuration.md rename .github/workflows/publish-docker.yaml => docs/menu.yml (51%) delete mode 100644 examples/rails-demo/README.md create mode 100644 lib/rails/generators/skywalking/start_generator.rb rename examples/sinatra-demo/sinatra-demo.rb => lib/rails/generators/skywalking/templates/skywalking_initializer.rb (74%) diff --git a/CHANGELOG.md b/CHANGELOG.md index e1bbbe6..c8861b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ Release Notes. #### Features - Initialize the ruby agent core. - Implement e2e tests. +- Add docs. #### Plugins * Support [Sinatra](https://github.com/sinatra/sinatra) diff --git a/docs/README.md b/docs/README.md index 650dd1e..45cfbd5 100644 --- a/docs/README.md +++ b/docs/README.md @@ -2,6 +2,6 @@ **This is the official documentation of SkyWalking Ruby agent. Welcome to the SkyWalking community!** -SkyWalking Ruby is an open-source auto-instrument agent that provides support for +SkyWalking Ruby is an open-source auto-instrument agent that provides support for distributed tracing across different frameworks within the Ruby language. -distributed tracing across different frameworks within the Ruby language. \ No newline at end of file +This documentation covers a number of ways to set up the Ruby agent for various use cases. \ No newline at end of file diff --git a/docs/en/agent/plugins.md b/docs/en/agent/plugins.md new file mode 100644 index 0000000..a22d930 --- /dev/null +++ b/docs/en/agent/plugins.md @@ -0,0 +1,10 @@ +# Tracing Plugins + +The following plugins provide the distributed tracing capability, and the OAP backend would analyze the topology and +metrics based on the tracing data. + +| Library | Version | Plugin Name | +|:----------------------------------------------|:---------|:------------| +| [redis](https://github.com/redis/redis-rb) | ~> 5.0 | `redis` | +| [net-http](https://github.com/ruby/net-http) | ~> 0.6.0 | `net_http` | +| [sinatra](https://github.com/sinatra/sinatra) | ~> 4.1 | `sinatra` | \ No newline at end of file diff --git a/docs/en/development-and-contribution/how-to-release.md b/docs/en/development-and-contribution/how-to-release.md index 143888a..bd9d4db 100644 --- a/docs/en/development-and-contribution/how-to-release.md +++ b/docs/en/development-and-contribution/how-to-release.md @@ -143,6 +143,8 @@ Vote result should follow these: 1. Publish to rubygems.org, this is optional for Apache releases, but we usually want to do this to let users use it conveniently. ```shell + gem build skywalking.gemspec + gem push skywalking.gemspec ``` **NOTE**: please double check before publishing to rubygems.org, it's difficult to unpublish and republish the module at the moment. @@ -169,11 +171,10 @@ Vote result should follow these: Website: http://skywalking.apache.org/ SkyWalking Ruby Resources: -- Issue: https://github.com/apache/skywalking/issues + Issue: https://github.com/apache/skywalking/issues + - Mailing list: dev@skywalking.apache.org - Documents: https://github.com/apache/skywalking-ruby/blob/v$VERSION/README.md The Apache SkyWalking Team -``` - - + ``` diff --git a/docs/en/setup/configuration.md b/docs/en/setup/configuration.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/en/setup/quick-start.md b/docs/en/setup/quick-start.md index e69de29..68f4f9e 100644 --- a/docs/en/setup/quick-start.md +++ b/docs/en/setup/quick-start.md @@ -0,0 +1,106 @@ +# 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](https://rubygems.org/) as `skywalking`, we recommend you install and +manage the skywalking gem dependency with [Bundler](http://bundler.io/), add the following line to your `Gemfile`, then +run `bundle install` to install the gem. + +~~~ruby +# Gemfile +source "https://rubygems.org" + +gem "skywalking" +~~~ + +Besides, you can also make installation as simple as `gem install skywalking`. + +## 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: + +~~~ruby +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](https://github.com/apache/skywalking-ruby/blob/main/lib/skywalking/configuration.rb#L21)) +- Arguments to `Skywalking.start` +- Configuration file (e.g. `conifg/skywalking.yml`) +- Environment variables + +The following is an example of configuration at start: + +~~~ruby +Skywalking.start( + service_name: 'sw-srv', + instance_name: 'sw-inst', + collector_backend_services: 'oap:11800' +) +~~~ + +The following is an example of a configuration file: +~~~yaml +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. | +| 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. | diff --git a/.github/workflows/publish-docker.yaml b/docs/menu.yml similarity index 51% rename from .github/workflows/publish-docker.yaml rename to docs/menu.yml index da211a5..2fa797f 100644 --- a/.github/workflows/publish-docker.yaml +++ b/docs/menu.yml @@ -14,36 +14,18 @@ # See the License for the specific language governing permissions and # limitations under the License. -name: publish-docker - -on: - push: - branches: - - main - -env: - HUB: ghcr.io/apache/skywalking-ruby - -jobs: - build: - if: github.repository == 'apache/skywalking-ruby' - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - timeout-minutes: 150 - env: - VERSION: ${{ github.sha }} - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - name: Log in to the Container registry - uses: docker/login-action@v1.10.0 - with: - registry: ${{ env.HUB }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - name: Polish docker image - run: | - make docker.push || make docker.push +catalog: + - name: SkyWalking Ruby Overview + path: /readme + - name: Quick Start + path: /en/setup/quick-start + - name: Agent + catalog: + - name: Supported Plugins + path: /en/agent/plugins + - name: Development and Contribution + catalog: + - name: How to Release + path: /en/development-and-contribution/how-to-release + - name: Changelog + path: https://github.com/apache/skywalking-ruby/blob/master/CHANGELOG.md \ No newline at end of file diff --git a/examples/rails-demo/README.md b/examples/rails-demo/README.md deleted file mode 100644 index 0fda4c2..0000000 --- a/examples/rails-demo/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# rails-demo - -```ruby -# config/skywalking.rb - -require 'skywalking' - -Skywalking.start -``` \ No newline at end of file diff --git a/lib/rails/generators/skywalking/start_generator.rb b/lib/rails/generators/skywalking/start_generator.rb new file mode 100644 index 0000000..a92977f --- /dev/null +++ b/lib/rails/generators/skywalking/start_generator.rb @@ -0,0 +1,47 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +module Skywalking + class StartGenerator < ::Rails::Generators::Base + source_root File.join(File.dirname(__FILE__), 'templates') + desc 'Creates a skywalking initializer' + + @namespace = "skywalking:start" + + def copy_initializer + print_header + print_footer + + template "skywalking_initializer.rb", "config/initializers/skywalking.rb" + end + + private + + def print_header + say "" + say shell.set_color "Welcome to the SkyWalking Ruby Agent instrumentation setup.", :green, :bold + say "" + end + + def print_footer + say "" + say "You can configure skywalking start parameters by modifying config/initializers/skywalking.rb." + say "" + say "Thanks for using! Welcome to contribute to the SkyWalking community." + say "" + end + end +end + diff --git a/examples/sinatra-demo/sinatra-demo.rb b/lib/rails/generators/skywalking/templates/skywalking_initializer.rb similarity index 74% rename from examples/sinatra-demo/sinatra-demo.rb rename to lib/rails/generators/skywalking/templates/skywalking_initializer.rb index 9b8720c..2b6fdbc 100644 --- a/examples/sinatra-demo/sinatra-demo.rb +++ b/lib/rails/generators/skywalking/templates/skywalking_initializer.rb @@ -13,19 +13,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -require 'sinatra' -require 'redis' -require 'skywalking' - -Skywalking.start - -get '/sw' do - "Hello, SkyWalking!" -end - -get '/hello/:name' do - redis = Redis.new(host: 'localhost', port: 6379) - redis.set('hello', 'world') - value = redis.get("hello") - "Hello #{value}!" -end \ No newline at end of file +Skywalking.start \ No newline at end of file diff --git a/lib/skywalking/agent.rb b/lib/skywalking/agent.rb index edb1310..2c61272 100644 --- a/lib/skywalking/agent.rb +++ b/lib/skywalking/agent.rb @@ -41,7 +41,9 @@ def start(config) config ||= {} config = Configuration.new(config) unless config.is_a?(Configuration) - @agent = new(config.agent_config).start! + @logger = config.logger + @agent_config = config.agent_config + @agent = new(@agent_config).start! config.freeze end end @@ -59,12 +61,10 @@ def started? !!(defined?(@agent) && @agent) end - def config - @config ||= Configuration.new.agent_config - end + attr_reader :logger, :agent_config end - attr_reader :plugins, :logger, :reporter + attr_reader :plugins, :reporter def initialize(config) @plugins = Plugins::PluginsManager.new(config) diff --git a/lib/skywalking/configuration.rb b/lib/skywalking/configuration.rb index 43c6d26..2d83988 100644 --- a/lib/skywalking/configuration.rb +++ b/lib/skywalking/configuration.rb @@ -29,6 +29,16 @@ class Configuration default: 'Your_InstanceName', desc: 'The name of this particular awesome Ruby service instance' }, + :namespace => { + type: :string, + default: '', + desc: 'The namespace of the service' + }, + :environment => { + type: :string, + default: '', + desc: 'The name of the environment this service is deployed in' + }, :collector_backend_services => { type: :string, default: '127.0.0.1:11800', @@ -37,16 +47,16 @@ class Configuration :config_file => { type: :string, default: '', - desc: 'The path to the config file' + desc: 'The absolute path to the configuration file' }, - :log_file => { + :log_file_name => { type: :string, - default: 'skywalking.log', + default: 'skywalking', desc: 'The name of the log file' }, :log_file_path => { type: :string, - default: 'STDOUT', + default: '', desc: 'The path to the log file' }, :log_level => { @@ -69,11 +79,6 @@ class Configuration default: '', desc: 'Ignore specific URL paths' }, - :namespace => { - type: :string, - default: '', - desc: 'The namespace of the service' - }, :instance_properties_json => { type: :string, default: '', @@ -98,19 +103,24 @@ class Configuration }.freeze # @api private - attr_reader :agent_config + attr_reader :agent_config, :logger def initialize(opts = {}) @agent_config = {} initialize_config(opts) + if @logger.nil? + @logger ||= Mutex.new.synchronize { build_logger } + end end def initialize_config(opts) # from the default value merge_config(DEFAULTS.transform_values { |v| v[:default] }) + # start parameters merge_config(opts) # from the custom config file merge_config(override_config_by_file) + # environment variables merge_config(override_config_by_env) end @@ -124,10 +134,15 @@ def merge_config(new_config) def override_config_by_file config_yaml = @agent_config[:config_file] - return if config_yaml.nil? || config_yaml.empty? + if config_yaml.nil? || config_yaml.empty? + config_yaml = File.join(srv_root, "config", "skywalking.yml") + end unless File.exist?(config_yaml) - logger.warn "No config file found at #{config_yaml}" + return + end + + unless srv_environment return end @@ -140,10 +155,10 @@ def override_config_by_file else YAML.safe_load(erb_file, permitted_classes: [], permitted_symbols: [], aliases: true) end + loaded_yaml = loaded_yaml[srv_environment] error = "Invalid format in config file" if loaded_yaml && !loaded_yaml.is_a?(Hash) rescue Exception => e error = e.message - logger.error "override config by file failed, error=%s", e.message nil end raise StandardError, "Error loading config file: #{config_yaml} - #{error}" if error @@ -187,14 +202,18 @@ def freeze self end + def srv_environment + @agent_config[:environment].to_s.empty? ? Skywalking::Environment.instance.framework_env : @agent_config[:environment] + end + + def srv_root + Skywalking::Environment.instance.framework_root + end + ##### # LOAD LOG ##### - def logger - @logger ||= Mutex.new.synchronize { get_logger } - end - - def get_logger + def build_logger return @logger if @logger log_dest = log_destination @@ -203,17 +222,17 @@ def get_logger def create_log(log_dest, level) if log_dest.is_a?(String) - log_dest = File.expand_path(out, Pathname.new(Dir.pwd).realpath) + log_dest = File.expand_path(log_dest, Pathname.new(Dir.pwd).realpath) FileUtils.mkdir_p(File.dirname(log_dest)) end begin - logger = ::Logger.new(log_dest, progname: "Skywalking-Ruby", level: level) + logger = ::Logger.new(log_dest, progname: "Skywalking", level: level) logger.formatter = log_formatter logger rescue => e - logger = ::Logger.new($stdout, progname: "Skywalking-Ruby", level: level) + logger = ::Logger.new($stdout, progname: "Skywalking", level: level) logger.warn "Create logger for file #{log_dest} failed, using standard out for logging error=#{e.message}" end end @@ -226,30 +245,32 @@ def log_formatter end def log_destination - if stdout? + candidate = @agent_config[:log_file_path].upcase + + case candidate + when "STDOUT" $stdout - elsif !agent_config[:log_file].nil? - agent_config[:log_file] - elsif !agent_config[:log_file_path].nil? - "#{agent_config[:log_file_path]}/skywalking.log" - else + when "STDERR" + $stderr + when nil? || '' $stdout + else + "#{@agent_config[:log_file_path]}/#{@agent_config[:log_file_name]}.log" end end def get_log_level - case @agent_config[:log_level] + candidate = @agent_config[:log_level].downcase + + case candidate when "debug" then ::Logger::DEBUG when "info" then ::Logger::INFO when "warn" then ::Logger::WARN when "error" then ::Logger::ERROR when "fatal" then ::Logger::FATAL + when ::Logger::DEBUG, ::Logger::INFO, ::Logger::WARN, ::Logger::ERROR, ::Logger::FATAL then candidate else ::Logger::INFO end end - - def stdout? - @agent_config[:log_file_path] == "STDOUT" - end end end \ No newline at end of file diff --git a/lib/skywalking/environment.rb b/lib/skywalking/environment.rb index 9d83b52..aa914e2 100644 --- a/lib/skywalking/environment.rb +++ b/lib/skywalking/environment.rb @@ -20,27 +20,119 @@ class Environment include Singleton include Log::Logging - def framework_info - @framework_info ||= generate_framework_info + class RailsFramework + def name + :rails + end + + def present? + defined?(::Rails) && defined?(::Rails::VERSION) + end + + def app_name + if defined?(::Rails) + ::Rails.application.class.to_s + .sub(/::Application$/, '') + end + rescue + nil + end + + def env + ::Rails.env + end end - def generate_framework_info - if defined?(::Rails::Application) - :rails - elsif defined?(::Sinatra::Base) + class SinatraFramework + def name :sinatra - else + end + + def present? + defined?(::Sinatra) && defined?(::Sinatra::Base) + end + + def app_name + candidate = ObjectSpace.each_object(Class).select { |klass| klass < ::Sinatra::Base } - [::Sinatra::Application] + + if candidate.length == 1 + candidate.first.name + else + "Sinatra" + end + rescue + "Sinatra" + end + + def env + ENV['RACK_ENV'] || ENV['RAILS_ENV'] || 'development' + end + end + + class RubyFramework + def name :ruby end + + def present? + true + end + + def app_name + "Ruby" + end + + def env + ENV['RACK_ENV'] || ENV['RAILS_ENV'] || 'development' + end + end + + FRAMEWORKS = [ + RailsFramework.new, + SinatraFramework.new, + RubyFramework.new + ].freeze + + def framework_info + @framework ||= FRAMEWORKS.detect { |candidate| candidate.present? } + end + + def framework_name + @framework_name ||= framework_info.name + end + + def framework_root + @framework_root ||= case @framework_name + when :rails + ::Rails.root + when :sinatra + Sinatra::Application.root || "." + else + "." + end end - def sinatra? - @framework_info = :sinatra + def framework_env + @framework_env ||= framework_info.env + end + + def app_name + framework_info.app_name + end + + def rails? + if defined?(::Rails) + ::Rails.application.class.to_s + .sub(/::Application$/, '') + end + rescue + nil end def shutdown_handler_supported? - if sinatra? - info "Shutdown handler not supported for Sinatra" + case framework_name + when :sinatra + warn "Shutdown handler not supported for Sinatra" false else true diff --git a/lib/skywalking/log/logger.rb b/lib/skywalking/log/logger.rb index da623a8..0461594 100644 --- a/lib/skywalking/log/logger.rb +++ b/lib/skywalking/log/logger.rb @@ -33,7 +33,7 @@ def error(msg, *args) end def log(level, msg, *args) - logger = Configuration.new.logger + logger = Agent.logger if logger if logger.respond_to?(level) if args.empty? diff --git a/lib/skywalking/tracing/exit_span.rb b/lib/skywalking/tracing/exit_span.rb index e7d78df..6fec2bd 100644 --- a/lib/skywalking/tracing/exit_span.rb +++ b/lib/skywalking/tracing/exit_span.rb @@ -33,7 +33,7 @@ def initialize( end def cfg - @config ||= ::Skywalking::Agent.config + @config ||= ::Skywalking::Agent.agent_config end def inject diff --git a/lib/skywalking/tracing/span_context.rb b/lib/skywalking/tracing/span_context.rb index 52c0cd1..6dff1a5 100644 --- a/lib/skywalking/tracing/span_context.rb +++ b/lib/skywalking/tracing/span_context.rb @@ -36,7 +36,7 @@ def initialize end def cfg - @config ||= ::Skywalking::Agent.config + @config ||= ::Skywalking::Agent.agent_config end def ignore_check(operation, carrier: nil) diff --git a/skywalking.gemspec b/skywalking.gemspec index cef22fc..cf46aa3 100644 --- a/skywalking.gemspec +++ b/skywalking.gemspec @@ -45,7 +45,7 @@ Gem::Specification.new do |spec| spec.add_dependency 'grpc', '1.68.1' # Base dev dependency - spec.add_development_dependency 'bundler', '>= 2.0' + spec.add_development_dependency 'bundler', '~> 2.0' spec.add_development_dependency 'rake', '13.2.1' spec.add_development_dependency 'rspec', '~> 3' spec.add_development_dependency 'rubocop', '1.69.2' diff --git a/spec/fixtures/agent.yaml b/spec/fixtures/agent.yaml index 7948e7c..b0c9921 100644 --- a/spec/fixtures/agent.yaml +++ b/spec/fixtures/agent.yaml @@ -15,12 +15,19 @@ # specific language governing permissions and limitations # under the License. -# The service name in UI -service_name: sw-ruby -instance_name: Your_InstanceName +common: &defaults + service_name: Ruby-Agent-Common + log_level: debug -# Whether to enable the reporter -collector_discard: false -# The gRPC server address of the backend service. -collector_backend_services: 127.0.0.1:11800 -config_file: config/skywalking.yaml \ No newline at end of file +development: + <<: *defaults + service_name: Ruby-Agent-Development + +test: + <<: *defaults + service_name: Ruby-Agent-Test + +production: + <<: *defaults + service_name: Ruby-Agent-Production + \ No newline at end of file diff --git a/spec/skywalking/config_spec.rb b/spec/skywalking/config_spec.rb index 7f135da..0ed38be 100644 --- a/spec/skywalking/config_spec.rb +++ b/spec/skywalking/config_spec.rb @@ -29,7 +29,7 @@ module Skywalking it 'loads from yaml' do config = Configuration.new(config_file: 'spec/fixtures/agent.yaml').agent_config - expect(config[:service_name]).to eq 'sw-ruby' + expect(config[:service_name]).to eq 'Ruby-Agent-Development' end it 'loads from env' do