cookbook 'newrelic-ng', '= 0.5.3'
newrelic-ng (14) Versions 0.5.3 Follow10
Installs/Configures newrelic monitoring
cookbook 'newrelic-ng', '= 0.5.3', :supermarket
knife supermarket install newrelic-ng
knife supermarket download newrelic-ng
newrelic-ng Cookbook
This cookbook provides LWRPs and recipes to install and configure different monitoring services for Newrelic.
- Official Newrelic nrsysmond
- MeetMe newrelic-plugin-agent
- Generic ruby newrelic agents like
- newrelic_sidekiq_agent
- newrelic_nginx_agent
- Should work with all ruby newrelic agents that are using
config/newrelic_plugin.yml
configuration file andnewrelic_[NAME]_agent.daemon
- PHP Agent
This cookbook requires Chef 11 or later.
Attributes
server monitoring with nrsysmond
You can set your Newrelic license key in the following attribute
node['newrelic-ng']['license_key'] = 'CHANGE_ME'
The 'config' attribute actually supports all other configuration options that nrsysmond accepts.
You can e.g. disable ssl
node['newrelic-ng']['nrsysmond']['config']['ssl'] = false
For a complete list of attributes, please see here
plugin-agent
You can set your New Relic license key, as well as other options in the following attribute (default values shown below)
node['newrelic-ng']['license_key'] = 'CHANGE_ME' node['newrelic-ng']['plugin-agent']['poll_interval'] = 60 node['newrelic-ng']['plugin-agent']['pidfile'] = '/var/run/newrelic/newrelic-plugin-agent.pid' node['newrelic-ng']['plugin-agent']['logfile'] = '/var/log/newrelic/newrelic-plugin-agent.log'
Set the pip package to install. Defaults to 'newrelic-plugin-agent'. You can set it e.g. to your GitHub fork
node.default['newrelic']['plugin-agent']['pip_package'] = 'git+git://github.com/chr4/newrelic-plugin-agent.git@fix-postgres-9.2'
For configuring your services, you need to insert a YAML string into the service_config
attribute
node['newrelic-ng']['plugin-agent']['service_config'] = <<-EOS postgresql: host: localhost port: 5432 user: postgres dbname: postgres EOS
generic-agent
Installs a generic plugin agent. E.g.
node['newrelic-ng']['generic-agent']['agents']['nginx_status_agent'] = { source: 'http://nginx.com/download/newrelic/newrelic_nginx_agent.tar.gz', config: <<-EOS - instance_name: localhost status_url: http://localhost/nginx_stub_status EOS } }
default['newrelic-ng']['generic-agent']['agents']['sidekiq_status_agent'] = { source: 'https://github.com/eksoverzero/newrelic_sidekiq_agent/archive/V2.0.tar.gz', config: <<-EOS - instance_name: "App name" uri: "redis://localhost:6379" namespace: "namespace" EOS } }
app-monitoring
These are used by the PHP Agent, and potentially could be used by the Java Agent & the Python Agent.
You’ll need to set the license key (shared amongst all the agents & the system monitor):
node['newrelic-ng']['license_key'] = 'CHANGE_ME'
Additionally, you have:
BASIC
-
node['newrelic-ng']['app_monitoring']['php-agent']['config_file']
– The path to the PHP agent config file; defaults to#{node['php']['ext_conf_dir']}/newrelic.ini
-
node['newrelic-ng']['app_monitoring']['php-agent']['startup_mode']
- The newrelic-daemon startup mode ("agent"/"external"), defaults to "agent" -
node['newrelic-ng']['app_monitoring']['php-agent']['server_service_name']
- The web server service name, defaults to "apache2"
ADVANCED
These are not namespaced to php-agent
, as they could later be shared amongst the Python agent, and the other non-Ruby-like agents.
New Relic’s PHP agent settings docs contain more details on these settings.
node['newrelic-ng']['app_monitoring']['enabled']
node['newrelic-ng']['app_monitoring']['logfile']
node['newrelic-ng']['app_monitoring']['loglevel']
node['newrelic-ng']['app_monitoring']['appname']
node['newrelic-ng']['app_monitoring']['daemon']['config_file']
node['newrelic-ng']['app_monitoring']['daemon']['upgrade_file']
node['newrelic-ng']['app_monitoring']['daemon']['logfile']
node['newrelic-ng']['app_monitoring']['daemon']['loglevel']
node['newrelic-ng']['app_monitoring']['daemon']['port']
node['newrelic-ng']['app_monitoring']['daemon']['max_threads']
node['newrelic-ng']['app_monitoring']['daemon']['ssl']
node['newrelic-ng']['app_monitoring']['daemon']['proxy']
node['newrelic-ng']['app_monitoring']['daemon']['pidfile']
node['newrelic-ng']['app_monitoring']['daemon']['location']
node['newrelic-ng']['app_monitoring']['daemon']['collector_host']
node['newrelic-ng']['app_monitoring']['daemon']['dont_launch']
node['newrelic-ng']['app_monitoring']['capture_params']
node['newrelic-ng']['app_monitoring']['ignored_params']
node['newrelic-ng']['app_monitoring']['error_collector']['enabled']
node['newrelic-ng']['app_monitoring']['error_collector']['record_database_errors']
node['newrelic-ng']['app_monitoring']['error_collector']['prioritize_api_errors']
node['newrelic-ng']['app_monitoring']['browser_monitoring']['auto_instrument']
node['newrelic-ng']['app_monitoring']['transaction_tracer']['enabled']
node['newrelic-ng']['app_monitoring']['transaction_tracer']['threshold']
node['newrelic-ng']['app_monitoring']['transaction_tracer']['detail']
node['newrelic-ng']['app_monitoring']['transaction_tracer']['slow_sql']
node['newrelic-ng']['app_monitoring']['transaction_tracer']['stack_trace_threshold']
node['newrelic-ng']['app_monitoring']['transaction_tracer']['explain_enabled']
node['newrelic-ng']['app_monitoring']['transaction_tracer']['explain_threshold']
node['newrelic-ng']['app_monitoring']['transaction_tracer']['record_sql']
node['newrelic-ng']['app_monitoring']['transaction_tracer']['custom']
node['newrelic-ng']['app_monitoring']['framework']
node['newrelic-ng']['app_monitoring']['webtransaction']['name']['remove_trailing_path']
node['newrelic-ng']['app_monitoring']['webtransaction']['name']['functions']
node['newrelic-ng']['app_monitoring']['webtransaction']['name']['files']
node['newrelic-ng']['app_monitoring']['daemon']['auditlog']
node['newrelic-ng']['app_monitoring']['analytics']['events']['enabled']
node['newrelic-ng']['app_monitoring']['high_security']
Recipes
To use the recipes, add the following to your metadata.rb
depends 'newrelic-ng'
default
- Includes newrelic-ng::nrsysmond-default
nrsysmond-default
- Includes newrelic-ng::nrsysmond-install
- Configures and starts nrsysmond according to the attributes
nrsysmond-install
- Includes newrelic-ng::newrelic-repository
- Installs newrelic-sysmond package
plugin-agent-default
- Includes newrelic-ng::plugin-agent-install
- Configures and starts newrelic-plugin-agent according to the attributes
plugin-agent-install
- Install python, python-pip and python-psycopg2
- Install newrelic-plugin-agent using pip
- Install newrelic-plugin-agent initscript (Debian, Ubuntu only)
- Create run/log directories
generic-agent-default
- Installs a generic newrelic agent.
newrelic-repository
- Sets up the Newrelic apt/yum repository
php-agent-default
- Install PHP (via the
php
cookbook, newrelic-php5 - Run New Relic install script
- Set up New Relic daemon according to
startup_mode
attribute:- Agent mode (i.e., no daemon)
- External (i.e., daemon mode)
Providers
To use the providers, add the following to your metadata.rb
depends 'newrelic-ng'
newrelic_ng_nrsysmond
When nrsysmond is installed (e.g. using the newrelic-ng::nrsysmond-install
recipe), you can configure it using the LWRP.
newrelic_ng_nrsysmond 'YOUR_LICENSE_KEY'
For more sophisticated setups, you can specify the follwoing additional attributes (they default to the node attributes)
newrelic_ng_nrsysmond 'custom' do license_key 'MY_PRODUCTION_KEY' if node.chef_environment == 'production' license_key 'MY_STAGING_KEY' if node.chef_environment == 'staging' # additional nrsysmond configuration options hostname node['fqdn'] ssl false loglevel 'info' proxy nil ssl_ca_bundle nil ssl_ca_path '/myca/path' pidfile '/tmp/nrsysmond.pid' collector_host 'my-collector-host.com' timeout 10 # You can also set a custom label # labels 'label_type:label_value' # path and attributes of nrsysmond.cfg owner 'root' group 'root' mode 00600 config_file '/etc/nrsysmond.cfg' # you can also specify your own configuration template cookbook 'yourcookbook' source 'yoursourcefile' end
newrelic_ngi_plugini_agent
When the plugin-agent is installed (e.g. using the newrelic-ng::plugin-agent-install
recipe), you can configure it using the LWRP.
newrelic_ng_plugin_agent 'YOUR_LICENSE_KEY'
For more sophisticated setups, you can specify the follwoing additional attributes (they default to the node attributes)
newrelic_ng_plugin_agent 'custom' do license_key 'MY_PRODUCTION_KEY' if node.chef_environment == 'production' license_key 'MY_STAGING_KEY' if node.chef_environment == 'staging' # additional plugin-agent configuration options poll_interval 20 logfile '/tmp/plugin-agent.log' pidfile '/tmp/plugin-agent.pid' # set your service configuration service_config <<-EOS postgresql: host: localhost port: 5432 user: postgres dbname: postgres EOS # path and attributes of nrsysmond owner 'root' group 'root' mode 00600 config_file '/etc/plugin-agent.cfg' # you can also specify your own configuration template cookbook 'yourcookbook' source 'yoursourcefile' end
newrelic_ng_generic_agent
You can install and configure generic Ruby New Relic agents also via this LWRPs. For more information, see attributes and recipes section above.
Example:
newrelic_ng_generic_agent 'MY_LICENSE_KEY' do plugin_name 'nginx_status_agent' source 'http://nginx.com/download/newrelic/newrelic_nginx_agent.tar.gz' config <<-EOS - instance_name: localhost status_url: http://localhost/nginx_stub_status EOS end
newrelic_ng_generic_agent 'MY_LICENSE_KEY' do plugin_name 'sidekiq_status_agent' source 'https://github.com/eksoverzero/newrelic_sidekiq_agent/archive/V2.0.tar.gz' config <<-EOS - instance_name: "App name" uri: "redis://localhost:6379" namespace: "namespace" EOS end
You can specify the following additional attributes
target_dir '/opt/newrelic-agents' owner 'newrelic' group 'newrelic'
The following actions are supported
action :install_and_configure # default action :install # only install the agent action :configure # only configure the agent
Contributing
e.g.
- Fork the repository on Github
- Create a named feature branch (like
add_component_x
) - Write your change(s)
- Write tests for your change (if applicable)
- Run the tests, ensuring they all pass
- Submit a Pull Request using GitHub
License and Authors
Author: Chris Aumann me@chr4.org
Contributors: Cameron Johnston cameron@needle.com, Jeff Byrnes jeff@evertrue.com,
Chris Graham chris.graham@blackboard.com, Andy Thompson me@andytson.com
License: GPLv3
Dependent cookbooks
apt >= 0.0.0 |
build-essential >= 0.0.0 |
python >= 0.0.0 |
php >= 0.0.0 |
Contingent cookbooks
CHANGELOG for newrelic-ng
This file is used to list changes made in each version of newrelic-ng.
0.5.3:
- Add "labels" option support for nrsysmond.cfg
- Add rubocop linting
0.5.2:
- Use
NR_INSTALL_SILENT
when installing php-agent
0.5.1:
- Add
hostname
attribute to nrsysmond - Add
high_security
attribute to php-agent
0.5.0:
- Change binary name to newrelic-plugin-agent (was newrelic_plugin_agent)
- Upgrade newrelic-plugin-agent by default, in case an older version is installed
0.4.0:
- Add support for php-agent, thanks to Jeff Byrnes!
0.3.4:
- Add workaround for newrelic_generic_agent, was not starting up properly, due to bug in their status command
0.3.3:
- Install plugin-agent dependencies automatically
- KILL plugin-agent if TERM is not enough (after 10s)
0.3.2:
- Fix default recipe
0.3.1:
- Several small bugfixes
0.3.0:
- Adds support for generic newrelic agents (e.g. newrelic_nginx_agent, newrelic_sidekiq_agent)
0.2.0:
- Uses shared node['newrelic-ng']['license_key'] variable for all services
- Fix a problem with newrelic-plugin-agent service not starting up properly
- Migrate hashes to ruby-1.9 codestyle
0.1.0:
- Initial release of newrelic-ng
Foodcritic Metric
0.5.3 failed this metric
FC017: LWRP does not notify when updated: /tmp/cook/b56c66139cf2eb35d17ce5dd/newrelic-ng/providers/generic_agent.rb:102
FC017: LWRP does not notify when updated: /tmp/cook/b56c66139cf2eb35d17ce5dd/newrelic-ng/providers/generic_agent.rb:107
FC017: LWRP does not notify when updated: /tmp/cook/b56c66139cf2eb35d17ce5dd/newrelic-ng/providers/generic_agent.rb:111
FC021: Resource condition in provider may not behave as expected: /tmp/cook/b56c66139cf2eb35d17ce5dd/newrelic-ng/providers/php_agent.rb:29
FC021: Resource condition in provider may not behave as expected: /tmp/cook/b56c66139cf2eb35d17ce5dd/newrelic-ng/providers/php_agent.rb:50
FC048: Prefer Mixlib::ShellOut: /tmp/cook/b56c66139cf2eb35d17ce5dd/newrelic-ng/providers/generic_agent.rb:35
FC048: Prefer Mixlib::ShellOut: /tmp/cook/b56c66139cf2eb35d17ce5dd/newrelic-ng/providers/user.rb:23
FC048: Prefer Mixlib::ShellOut: /tmp/cook/b56c66139cf2eb35d17ce5dd/newrelic-ng/providers/user.rb:31
FC048: Prefer Mixlib::ShellOut: /tmp/cook/b56c66139cf2eb35d17ce5dd/newrelic-ng/recipes/plugin-agent-install.rb:34
0.5.3 failed this metric
FC017: LWRP does not notify when updated: /tmp/cook/b56c66139cf2eb35d17ce5dd/newrelic-ng/providers/generic_agent.rb:107
FC017: LWRP does not notify when updated: /tmp/cook/b56c66139cf2eb35d17ce5dd/newrelic-ng/providers/generic_agent.rb:111
FC021: Resource condition in provider may not behave as expected: /tmp/cook/b56c66139cf2eb35d17ce5dd/newrelic-ng/providers/php_agent.rb:29
FC021: Resource condition in provider may not behave as expected: /tmp/cook/b56c66139cf2eb35d17ce5dd/newrelic-ng/providers/php_agent.rb:50
FC048: Prefer Mixlib::ShellOut: /tmp/cook/b56c66139cf2eb35d17ce5dd/newrelic-ng/providers/generic_agent.rb:35
FC048: Prefer Mixlib::ShellOut: /tmp/cook/b56c66139cf2eb35d17ce5dd/newrelic-ng/providers/user.rb:23
FC048: Prefer Mixlib::ShellOut: /tmp/cook/b56c66139cf2eb35d17ce5dd/newrelic-ng/providers/user.rb:31
FC048: Prefer Mixlib::ShellOut: /tmp/cook/b56c66139cf2eb35d17ce5dd/newrelic-ng/recipes/plugin-agent-install.rb:34