Log streaming: New Relic Logs

Fastly's Real-Time Log Streaming feature can send log files to New Relic Logs.

Prerequisites

Before adding New Relic Logs as a logging endpoint for Fastly services, you will need to:

Adding New Relic Logs as a logging endpoint

Follow these instructions to add New Relic Logs as a logging endpoint:

  1. Review the information in our Setting Up Remote Log Streaming guide.
  2. Click the New Relic Logs Create endpoint button. The Create a New Relic Logs endpoint page appears.

    the create a New Relic logs page

  3. Fill out the Create a New Relic Logs endpoint fields as follows:
    • In the Name field, enter a human-readable name for the endpoint.
    • In the Placement area, select where the logging call should be placed in the generated VCL. Valid values are Format Version Default, waf_debug (waf_debug_log), and None. See our guide on changing log placement for more information.
    • In the Log format field, enter the data to send to New Relic Logs. See the example format section for details.
    • In the License key / Insert key field, enter your New Relic license key or Insert API key.
  4. Click the Create button to create the new logging endpoint.
  5. Click the Activate button to deploy your configuration changes.

Example format

Data sent to New Relic Logs must be serialized as a JSON object. Here's an example format string for sending data to New Relic Logs:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
  "timestamp":"%{begin:%Y-%m-%dT%H:%M:%S}t",
  "client_ip":"%{req.http.Fastly-Client-IP}V",
  "geo_country":"%{client.geo.country_name}V",
  "geo_city":"%{client.geo.city}V",
  "url":"%{json.escape(req.url)}V",
  "request_referer":"%{json.escape(req.http.referer)}V",
  "request_user_agent":"%{json.escape(req.http.User-Agent)}V",
  "fastly_is_edge":%{if(fastly.ff.visits_this_service == 0, "true", "false")}V,
  "response_state":"%{json.escape(fastly_info.state)}V",
  "response_status":%{resp.status}V,
  "response_reason":%{if(resp.response, "%22"+json.escape(resp.response)+"%22", "null")}V,
  "response_body_size":%{resp.body_bytes_written}V,
  "request_method":"%{json.escape(req.method)}V",
  "request_protocol":"%{json.escape(req.proto)}V",
  "fastly_server":"%{json.escape(server.identity)}V",
  "host":"%{if(req.http.Fastly-Orig-Host, req.http.Fastly-Orig-Host, req.http.Host)}V"
}

Logging a timestamp

If a timestamp field is present in the Fastly log, it must be specified as millisecond or seconds since Epoch to override the New Relic timestamp. If not included, Fastly will generate a timestamp.

Back to Top