Packages
new_relic_agent
1.0.5
1.40.3
1.40.2
1.40.1
1.40.0
1.39.0
1.38.0
1.37.0
1.36.0
1.35.0
1.34.0
1.33.0
1.32.0
1.31.1
1.31.0
1.30.0
1.29.0
1.28.0
1.27.8
1.27.7
1.27.6
1.27.5
1.27.4
1.27.3
1.27.2
1.27.1
1.27.0
1.26.0
1.25.3
1.25.2
1.25.1
1.25.0
1.24.5
1.24.4
1.24.3
1.24.2
1.24.1
1.24.0
1.24.0-rc.10
1.24.0-rc.9
1.24.0-rc.8
1.24.0-rc.7
1.23.6
1.23.5
1.23.4
1.23.3
1.23.2
1.23.1
1.23.0
1.23.0-rc.6
1.23.0-rc.5
1.23.0-rc.4
1.23.0-rc.3
1.23.0-rc.2
1.23.0-rc.1
1.22.6
1.22.5
1.22.4
1.22.3
1.22.2
1.22.1
1.22.0
1.21.2
1.21.1
1.21.0
1.21.0-rc.3
1.21.0-rc.1
1.20.0
1.20.0-rc.1
1.19.7
1.19.6
1.19.5
1.19.4
1.19.3
1.19.2
1.19.1
1.19.0
1.18.5
1.18.4
1.18.3
1.18.2
1.18.1
1.18.0
1.18.0-rc.5
1.18.0-rc.4
1.18.0-rc.2
1.18.0-rc.1
1.17.1
1.17.0
1.17.0-rc.4
1.17.0-rc.3
1.17.0-rc.2
1.17.0-rc.1
1.17.0-rc.0
1.16.7
1.16.6
1.16.5
1.16.4
1.16.3
1.16.2
1.16.1
1.16.0
1.16.0-rc.2
1.16.0-rc.1
1.16.0-rc.0
1.15.0
1.15.0-rc.3
1.15.0-rc.2
1.15.0-rc.1
1.14.0
1.13.1
1.13.0
1.12.0
1.11.0
1.10.2
1.10.1
1.10.0
1.9.12
1.9.11
1.9.10
1.9.9
1.9.8
1.9.7
1.9.6
1.9.5
1.9.4
1.9.3
1.9.2
1.9.1
1.9.0
1.8.0
1.7.0
1.6.2
1.6.1
1.6.0
1.5.0
1.4.0
1.3.2
1.3.1
1.3.0
1.2.1
1.2.0
1.1.0
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
New Relic's Open-Source Elixir Agent
Current section
Files
Jump to
Current section
Files
lib/new_relic/config.ex
defmodule NewRelic.Config do
@moduledoc """
New Relic Agent Configuration
All configuration items can be set via ENV variable _or_ via Application config
"""
@doc "Configure your application name. **Required**"
def app_name,
do: System.get_env("NEW_RELIC_APP_NAME") || Application.get_env(:new_relic_agent, :app_name)
@doc "Configure your New Relic License Key. **Required**"
def license_key,
do:
System.get_env("NEW_RELIC_LICENSE_KEY") ||
Application.get_env(:new_relic_agent, :license_key)
@doc "Configure the host to report to. Most customers have no need to set this."
def host,
do: System.get_env("NEW_RELIC_HOST") || Application.get_env(:new_relic_agent, :host)
@doc """
Configure the Agent logging mechanism. Defaults to `"tmp/new_relic.log"`
Options:
- `"stdout"`
- `"memory"` (Useful for testing)
- `"file_name.log"`
"""
def logger,
do: System.get_env("NEW_RELIC_LOG") || Application.get_env(:new_relic_agent, :log)
@doc """
An optional list of key/value pairs that will be automatic custom attributes
on all event types reported (Transactions, etc)
Options:
- `{:system, "ENV_NAME"}` Read a System ENV variable
- `{module, function, args}` Call a function. Warning: Be very careful, this will get called a lot!
- `"foo"` A direct value
Example:
```
config :new_relic_agent,
automatic_attributes: [
environment: {:system, "APP_ENV"},
node_name: {Node, :self, []},
team_name: "Afterlife"
]
```
"""
def automatic_attributes do
Application.get_env(:new_relic_agent, :automatic_attributes, [])
|> Enum.into(%{}, fn
{name, {:system, env_var}} -> {name, System.get_env(env_var)}
{name, {m, f, a}} -> {name, apply(m, f, a)}
{name, value} -> {name, value}
end)
end
@doc """
Some Agent features can be controlled via configuration
* `:error_collector_enabled` (default `true`)
"""
def feature?(:error_collector) do
case System.get_env("NEW_RELIC_ERROR_COLLECTOR_ENABLED") do
"true" -> true
"false" -> false
_ -> Application.get_env(:new_relic_agent, :error_collector_enabled, true)
end
end
@doc false
def enabled?, do: (harvest_enabled?() && app_name() && license_key() && true) || false
defp harvest_enabled?,
do:
System.get_env("NEW_RELIC_HARVEST_ENABLED") ||
Application.get_env(:new_relic_agent, :harvest_enabled, true)
@external_resource "VERSION"
@agent_version "VERSION" |> File.read!() |> String.trim()
@doc false
def agent_version, do: @agent_version
end