NewRelic Setup for Ubuntu Server with PHP, FPM, Nginx and MySQL

This guide is for newrelic service.

Add Ubuntu Repo

Run following commands once on target server which need to be monitored:

wget -O - http://download.newrelic.com/548C16BF.gpg | sudo apt-key add -
sudo sh -c 'echo "deb http://apt.newrelic.com/debian/ newrelic non-free" > /etc/apt/sources.list.d/newrelic.list'
apt-get update

Server Monitoring

To enable server monitoring, install package newrelic-sysmond

apt-get install newrelic-sysmond

Then add license key:

nrsysmond-config --set license_key=XXXXXXXXXX

You can get your license key, i.e. value of XXXXXXXXXX from https://rpm.newrelic.com/accounts/

Start monitoring daemon:

service newrelic-sysmond start

This will start monitoring CPU, Memory, Disk utilization.

PHP App Monitoring

Since we are running WordPress (mostly), we need to setup PHP app monitoring as well.

For this there is a separate package in newrelic repo. Run following command to install it:

sudo apt-get install newrelic-php5

Next run command:

newrelic-install install

Above will prompt you for license key, which is same as previous step.

You may manually need to copy newrelic ini file from php-cli to php-fpm:

cp /etc/php5/cli/conf.d/newrelic.ini /etc/php5/fpm/conf.d/

If you are monitoring multiple servers with  newrelic.appname, you may like to change newrelic.appname in  /etc/php5/fpm/conf.d/newrelic.ini to something unique.

You may need to restart PHP monitor:

service php5-fpm restart

PHP app monitor will graph PHP response time, error rate and throughput.

PHP-FPM and Nginx Status Monitoring

Before we proceed, I am assuming that you already have PHP-FPM status and Nginx status page enabled.

For PHP-FPM and Nginx, we will be using a third party plugin coded in python. (Github Link)

Installation

pip install newrelic-plugin-agent

Config

Copy sample config file and open it in editor.

cp /opt/newrelic_plugin_agent/newrelic_plugin_agent.cfg  /etc/newrelic/newrelic_plugin_agent.cfg
vim /etc/newrelic/newrelic_plugin_agent.cfg

Fine license_key line and change it’s value to your newrelic license key.

Alter fpm config-block to look like below:

  php_fpm:
      name: UNIQUNE-NAME
      host: example.com
      path: /status
      query: json

Alter nginx config-block to look like below:

  nginx:
     name: UNIQUE-NAME
     host: example.com
     path: /nginx_status

Test

newrelic_plugin_agent -c /etc/newrelic/newrelic_plugin_agent.cfg -f

If all looks good, start monitoring using:

newrelic_plugin_agent -c /etc/newrelic/newrelic_plugin_agent.cfg

We just removed -f from end.

MySQL Monitoring

You can get latest download link for MySQL plugin from https://rpm.newrelic.com/accounts/219515/plugins/directory/52

wget https://rpm.newrelic.com/plugins/52/6d5832e3a0ca0ee6e2cf45da8d0da170 -O nr-mysql.tar.gz 
tar xvf nr-mysql.tar.gz 
cd newrelic_mysql_plugin-1.0.9
cp config/template_newrelic.properties config/newrelic.properties
cp config/template_mysql.instance.json config/mysql.instance.json
cp config/example_logging.properties config/logging.properties

Then open  config/newrelic.properties and update  licenseKey.

Also update mysql username and password in  config/mysql.instance.json

Finally start mysql monitoring:

java -jar newrelic_mysql_plugin-1.0.9.jar

If you don’t have java installed, you may need to install it first.