De definitieve NewRelic Plugin Agent HOWTO

Wat is de NewRelic Plug-in Agent?

NewRelic biedt een PHP agent die out-of-the-box al veel zaken in je PHP omgeving bewaakt maar wat nu als je extra zaken wilt gebruiken om de performance van je applicatie te verbeteren? Natuurlijk wil je deze extra features zoals APC en memcached ook bewaken want dit kan behoorlijke impact hebben op de performance van je applicatie voor de eindgebruiker. MeetMe heeft daarvoor de NewRelic Plug-in Agent ontwikkeld.

De NewRelic Plug-in Agent van MeetMe ondersteund een grote verscheidenheid aan technieken:

  • Alternative PHP Cache
  • Apache HTTP Server
  • CouchDB
  • Edgecast CDN “Realtime” API
  • Memcached
  • MongoDB
  • Nginx
  • pgBouncer
  • PHP FPM
  • PostgreSQL
  • RabbitMQ
  • Redis
  • Riak
  • uWSGI

De installatie van deze agent is alleen geen next, next, finish dus ik heb daarom een korte HOW-TO gemaakt. In mijn HOW-TO maak ik gebruik van Ubuntu Server 12.04 LTS. Iedereen met een Debian gebaseerde distro kan gebruik maken van dezelfde commando’s.

Voorbereiding

De NewRelic Plug-in Agent is een Python applicatie en dus moet je PIP geïnstalleerd hebben. PIP is een installer voor python packages voor elk denkbaar OS.

Om PIP te installeren en gelijk van een update te voorzien gebruik je de volgende commando’s:

$ sudo apt-get install python-pip python-dev build-essential

$ sudo pip install --upgrade pip

$ sudo pip install --upgrade virtualenv

De configuratie file

Kopieer de configuratie file naar de /etc/newrelic/ directory vanuit de /opt/newrelic_plugin_agent directory waar de agent geïnstalleerd wordt.

$ sudo cp /opt/newrelic_plugin_agent/etc/newrelic/newrelic_plugin_agent.cfg /etc/newrelic/newrelic_plugin_agent.cfg

De configuratie file bevat losse secties voor elke technologie die je kunt bewaken. De data is voorzien van comments (#) en je moet deze weghalen om de sectie actief te maken. Elke sectie bevat een aantal variabelen.  Deze zijn ingevuld met standaard waarden en dienen als voorbeeld. Pas ze aan naar je eigen situatie. Daarnaast bevat de configuratie file een regel over de account waaronder de agent moet draaien (Daemon: -> user:). Deze staat standaard op newrelic.

Extra logging

In de configuratie file kun je aanpassingen maken om de logging die de agent lokaal maakt uit te breiden. Dit kan handig zijn als er geen data in NewRelic aankomt.

loggers:
newrelic_plugin_agent:
level: INFO

Als je INFO verandert naar DEBUG krijg je extra logging. Uiteraard moet je daar de agent wel voor herstarten.

Permissions

De Agent gebruikt 2 directories om logging weg te schrijven en om de data tijdelijk lokaal op te slaan. Het is van belang deze directories de juiste rechten te geven zodat de user die in de config-file van de agent geconfigureerd is deze directories kan benaderen en hier data weg kan schrijven.

$ sudo chown newrelic:newrelic /var/run/newrelic

$ sudo chown newrelic:newrelic /var/log/newrelic

De agent starten

newrelic-plugin-agent-interface

Vervolgens kun je de agent starten met het volgende commando:

$ sudo newrelic_plugin_agent -c /etc/newrelic/newrelic_plugin_agent.cfg

Dit commando kun je nog aanvullen met de -f vlag. Hiermee vertel je de agent om in de voorgrond te draaien ipv in de achtergrond. Hiermee wordt de logging naar de console geschreven.

Als de agent nu goed draait zie je per technologie die je enabled hebt een kopje in je NewRelic interface.

De agent draaien als service

De NewRelic Plugin Agent wordt geleverd met een script waarmee je de agent als service kunt starten, zelfs met het booten van je server. De volgende commando’s kun je gebruiken om dit script te installeren.

$ cd /opt/newrelic_plugin_agent/
$ sudo cp newrelic_plugin_agent.deb /etc/init.d/
$ sudo chmod +x /etc/init.d/newrelic_plugin_agent

Vervolgens kun je de service stoppen, starten en herstarten

$ sudo /etc/init.d/newrelic_plugin_agent stop
$ sudo /etc/init.d/newrelic_plugin_agent start
$ sudo /etc/init.d/newrelic_plugin_agent restart

Wil je de service vervolgens op laten starten tijdens het booten van je server? Gebruik onderstaand commando.

$ sudo update-rc.d newrelic_plugin_agent defaults

We hebben data!

newrelic-plugin-agent-apc-data

Modules NewRelic Plug-in Agent

Hieronder behandel ik een aantal componenten die de newrelic plug-in agent kan bewaken. De volgorde is willekeurig en komt niet overeen met de volgorde in de configuratie file.

1. APC

APC staat voor Alternative PHP Cache. Dit is een module om memory caching toe te passen op PHP applicaties in Apache2. Meer informatie kun je vinden op http://php.net/manual/en/book.apc.php

Om APC te bewaken moet je een aanpassing maken in /etc/newrelic/newrelic_plugin_agent.cfg.

php_apc:
name: vps-1
scheme: http
host: urlto.apc.vps
verify_ssl_cert: true
port: 80
path: /apc-nrp.php

Hierboven zie je de instellingen die mogelijk zijn. Bij name vul je de naam in zoals deze herkenbaar terugkomt in NewRelic. Meestal gebruik je hier de hostname van de machine. Scheme geeft je de mogelijkheid om een connectie te maken via http of https. Host is de hostname waar de agent een verbinding naar maakt via de opgegeven port. Path is het pad naar het bestand apc-nrp.php wat meegestuurd wordt met de installatie van de NewRelic plug-in Agent. In bovenstaand voorbeeld maakt hij dus een verbinding met http://urlto.apc.vps/apc-nrp.php. Dit bestand kun je in een browser openen. Je krijgt dan JSON-data in je browservenster.

Het bestand apc-nrp.php wordt geïnstalleerd in /opt/newrelic_plugin_agent/ en kun je kopieren naar de map waar hij benaderbaar is voor een browser.

sudo cp /top/newrelic_plugin_agent/apc-nrp.php /var/www/website/

2. Apache HTTP Server

De meest gebruikte webserver ter wereld is zonder enige twijfel de Apache HTTP Server. Standaard levert deze een module mee om de server status te bekijken. Met de NewRelic Plugin Agent kun je deze gegevens naar NewRelic sturen.

Voor het configureren van server-status op Apache2 (Debian and Ubuntu) verwijs ik graag naar de uitstekende Rackspace Knowledgebase.

Om deze server-status vervolgens dien je de file /etc/newrelic/newrelic_plugin_agent.cfg weer aan te passen.

apache_httpd:
name: vps-1
scheme: http
host: 127.0.0.1
verify_ssl_cert: true
port: 80
path: /server-status

Hierboven zie je de instellingen die mogelijk zijn. Bij name vul je de naam in zoals deze herkenbaar terugkomt in NewRelic. Meestal gebruik je hier de hostname van de machine. Scheme geeft je de mogelijkheid om een connectie te maken via http of https. Host is de hostname waar de agent een verbinding naar maakt via de opgegeven port. In veel gevallen enable je server-status alleen vanaf localhost of 127.0.0.1, vul dat hier dan in. Path is het pad naar de server-status pagina /server-status die je eerder enabled hebt.

Over Coen Meerbeek

Splunk consultant @ Blue Factory, eigenaar en oprichter @ BuzzardLabs, basketbalspeler en Xbox-gamer. Lees meer van Coen op Launchers.nl en Twitter.

Laat wat van je horen

*