Configuration. Important, because without it the AppSignal Ruby gem won't know which application it's instrumenting or in which environment.
In this topic we'll explain how to configure AppSignal, what can be configured in the Ruby gem, what's the minimal configuration needed and how the configuration is loaded.
- Minimal required configuration
- Configuration methods
- Configuration options
- Configuration load order
- Example configuration file
1 2 3 4 5 # config/appsignal.yml production: active: true push_api_key: "1234-1234-1234" name: "My app"
1 2 3 4 # Environment variables export APPSIGNAL_PUSH_API_KEY="1234-1234-1234" export APPSIGNAL_APP_NAME="My app" export APPSIGNAL_APP_ENV="production"
The above configuration options are the only required options. All other configuration is optional.
If you use Rails you can even skip the app name, we will use the name of your Rails application.
If you use a framework that is aware of environments and is supported by the AppSignal gem, the environment is detected automatically.
The AppSignal Ruby gem can be configured with an configuration file. During installation the Ruby gem will create a
config/appsignal.yml file, if selected. In this file some default configuration is supplied and can be modified to fit your application's needs. This
config/appsignal.yml file supports ERB tags so that system environment variables can also be loaded in this file.
config/appsignal.yml configuration examples shown for configuration options will use the
default YAML anchor. The AppSignal installer will create an
config/appsignal.yml file with this anchor by default. If not present, make sure you add the config option to the correct environment.
1 2 3 4 5 6 7 8 9 10 11 12 # config/appsignal.yml # Define the "defaults" anchor default: &defaults name: "My app" # Supports ERB push_api_key: "<%= ENV['APPSIGNAL_PUSH_API_KEY'] %>" production: # Loads the defaults in the production environment by referencing the anchor <<: *defaults # production environment specific configuration active: true
An alternative way of configuring AppSignal is by using system environment variables on the host the application AppSignal is monitoring is running on. This is common on platforms such as Heroku.
Make sure these environment variables are configured in the way that's compatible with your Operating System and that the values get loaded before your app with AppSignal is started.
1 export APPSIGNAL_APP_NAME="My app"
Here's an example of an
appsignal.yml configuration file. It's recommended
you only add the configuration you need to your configuration file.
For the full list of options, please see the configuration options page.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 # config/appsignal.yml default: &defaults # Your push api key, it is possible to set this dynamically using ERB: # push_api_key: "<%= ENV['APPSIGNAL_PUSH_API_KEY'] %>" push_api_key: "65c91e2f-c0f2-4005-8064-ffffec5f7b20" # Your app's name name: "My App" # Your server's hostname hostname: "frontend1.myapp.com" # Add default instrumentation of net/http instrument_net_http: true # Skip session data, it contains private information. skip_session_data: true # Ignore these errors. ignore_errors: - SystemExit # Ignore these actions, used by our Loadbalancer. ignore_actions: - IsUpController#index # Enable allocation tracking for memory metrics: enable_allocation_tracking: true # Enable Garbage Collection instrumentation enable_gc_instrumentation: true # Configuration per environment, leave out an environment or set active # to false to not push metrics for that environment. development: <<: *defaults active: true debug: true staging: <<: *defaults active: <%= ENV['APPSIGNAL_ACTIVE'] == 'true' %> production: <<: *defaults active: <%= ENV['APPSIGNAL_ACTIVE'] == 'true' %> # Set different path for the log file log_path: '/home/my_app/app/shared/log' # Set AppSignal working dir working_directory_path: '/tmp/appsignal' # When it's not possible to connect to the outside world without a proxy http_proxy: 'proxy.mydomain.com:8080'