New Relic Servers is an excellent cloud-based server monitoring platform. I maintain a set of servers, both physical and virtual, running a range of operating systems, namely: Debian 7/8, Ubuntu 14.04, CentOS 6/7 and openSUSE 13.2. I work with configuration management (particularly Salt), so maintaining multiple configurations is important in understanding complex environments.
New Relic already provides packages for Debian/Ubuntu, Red Hat, Joyent SmartOS and Windows. For some reason, openSUSE doesn’t get the royal treatment, but they do provide the requisite package files in a tar.gz archive for “Other Linux” systems, so let’s work with that.
Installation
- Grab the latest release version of New Relic Servers, available from the page below:
https://rpm.newrelic.com/accounts/<YOUR-NEWRELIC-ACCOUNT-ID>/servers/get_started
server#> wget https://download.newrelic.com/server_monitor/release/newrelic-sysmond-<VERSION>-linux.tar.gz
- Decompress the downloaded archive.
server#> tar -zxf newrelic-sysmond-<VERSION>-linux.tar.gz
- cd into the resulting directory.
server#> cd newrelic-sysmond-<VERSION>-linux
- Important: Create the configuration and log directories.
server#> mkdir /etc/newrelic
server#> mkdir -m 750 /var/log/newrelic
- Copy the example nrsysmond.cfg file to /etc/newrelic.
server#> cp nrsysmond.cfg /etc/newrelic
- Edit the config file and enter your New Relic license key in the appropriate place, as below. No other changes should be necessary.
server#> vim /etc/newrelic/nrsysmond.cfg
[...] license_key=<NEWRELIC-LICENSE-KEY> [...]
- Copy the daemon binary into somewhere that’s readily available on your path. /usr/local/sbin is a reliable choice.
server#> cp daemon/nrsysmond.x64 /usr/local/sbin/nrsysmond
Testing
Let’s go ahead and run nrsysmond. Remember to pass it the config file with the -c option.
server#> nrsysmond -c /etc/newrelic/nrsysmond.cfg
All going well, your openSUSE server will now be reporting to New Relic and you will be able to monitor it on your dashboard.
systemd service
No daemon is of any use without a decent init script or, in this case, a systemd service.
Disclaimer: I’ve only written a handful of systemd services, and they’ve all been pretty simple in nature. This is by no means a “good” service, but it seems to work fine as a means to manage New Relic Servers in a reliable fashion.
- Create the systemd service file.
server#> vim /usr/lib/systemd/system/newrelic-sysmond.service
[Unit] Description=Starts and stops the New Relic Server Monitor Daemon. After=syslog.target network.target
[Service] Type=forking User=root WorkingDirectory=/tmp ExecStart=/usr/local/sbin/nrsysmond -c /etc/newrelic/nrsysmond.cfg ExecStop=/usr/bin/pkill nrsysmond Restart=on-failure PIDFile=/var/run/nrsysmond.pid
[Install] WantedBy=multi-user.target
- Reload the systemd manager configuration.
server#> systemctl daemon-reload
- Start the new systemd service.
server#> systemctl start newrelic-sysmond.service
- If you want New Relic to start on system boot, you can enable the service.
server#> systemctl enable newrelic-sysmond.service
And that should be it! All going well, you now have a functional New Relic install on openSUSE with a working systemd service.