New Relic Logstash Output Plugin

This is a plugin for Logstash that outputs logs to New Relic.

Installation

Install the New Relic Logstash plugin using the following command:
logstash-plugin install logstash-output-newrelic

Versions

Versions of this plugin less than 1.0.0 are unsupported.

Configuration

Add the following block to your logstash.conf (with your specific API Insert key), then restart Logstash. There are other optional configuration properties, see below.

Get your API Insert Key: https://insights.newrelic.com/accounts/<ACCOUNT_ID>/manage/api_keys

Example:

output {
  newrelic {
    api_key => "<API_INSERT_KEY>"
  }
}

Required plugin configuration

Property Description
api_key your New Relic API Insert key

Optional plugin configuration

Property Description Default value
concurrent_requests The number of threads to make requests from 1
base_uri New Relic ingestion endpoint https://log-api.newrelic.com/log/v1

EU plugin configuration

When using this plugin in the EU override the base_uri with http://log-api.eu.newrelic.com/log/v1

Testing

An easy way to test the plugin is to make sure Logstash is getting input from a log file you can write to. Something like this in your logstash.conf:

input {
  file {
    path => "/path/to/your/log/file"
  }
}
  • Restart Logstash
  • Append a test log message to your log file: echo "test message" >> /path/to/your/log/file
  • Search New Relic Logs for "test message"

JSON message parsing

This plugin will attempt to parse any 'message' attribute as JSON -- if it is JSON, it will be parsed and the JSON attributes will be added to the event.

For example, the event:

{
  "timestamp": 1562767499238,
  "message": "{\"service-name\": \"login-service\", \"user\": {\"id\": 123, \"name\": \"alice\"}}"
}

Will be treated as:

{
  "timestamp": 1562767499238,
  "message": "{\"service-name\": \"my-service\", \"user\": {\"id\": 123, \"name\": \"alice\"}}",
  "service-name": "login-service",
  "user": {
    "id": 123,
    "name": "alice"
  }
}