Java library for interfacing with New Relic APIs
There is a template config file in the config directory, it is in HOCON format. You can make a copy of this file for your own configuration. The config uses different identifiers, this section of the documentation covers API Keys and how they are used.
Name | Description |
---|---|
accountName | Just a label to help know the name of the account, used in logging. |
adminName | A label to know who is the owner of the Admin API Key. |
accountId | The Account ID is required to query data from your account. |
licenseKey | The License Key is used for Agents or Plugins to send data to your account. |
restKey | The Rest API Key can be used to query certain kinds of data, it's recommended to use an Admin Key which provides more flexibility. |
adminKey | The Admin API Key is like the Rest API Key but tied to a single admin user, there are also a few API calls that require this key. |
insightsQueryKey | The Insights Query API Key is used to run NRQL queries and process the results. |
insightsInsertKey | The Insights Insert API Key is used to publish custom events into Insights. |
Once you make a copy of config/template.conf to your own file, then you reference it with -Dconfig.file
at runtime.
This project relies on gradle, so you can test that everything is working properly (including your config file) like this:
$ ./gradlew -Dconfig.file=config/myconfig.conf test
:compileJava
:processResources UP-TO-DATE
:classes
:compileTestJava
:processTestResources UP-TO-DATE
:testClasses
:test
Hibernate: drop table account if exists
Hibernate: drop table application if exists
BUILD SUCCESSFUL
Total time: 6.39 secs
In addition to including Java libraries for working with the API, this project also can run as a Spring Boot application. Developers can create tasks such as an ETL-style program for working with the API on a regular schedule. There are currently a couple of tasks available.
This task will copy metrics from a source account (through the Applications API) and publish to a destination account (through the Insights Insert API). You configure the task with a config section like this:
tasks {
metricsCopier {
enabled = false
source.account = "defaultAccount"
source.metricFile = "config/metricsTemplate.csv"
dest.account = "defaultAccount"
dest.eventType = "MetricTest"
}
}
Here are all the sections underneath tasks.metricsCopier
:
enabled
(default: false) - set to true so you can use this tasksource.account
- where you will query for data (needs to match the name of an account from the accounts section)source.metricFile
- location of the metric CSV file containing the source metrics to copy outdest.account
- where you want to publish the results (needs to match the name of an account from the accounts section)dest.eventType
- name of the eventType in Insights for the created events
In addition to the config file you need to make a metric CSV with the metrics you want to copy out. Copy the metricTemplate.csv
file and then add in your values. Here are the fields for the CSV:
appName
- name of the applicationappId
- application id in the New Relic APIconfigType
- you must choose whether to collect data at theapplication
,application_host
orapplication_instance
metricName
- exact metric name to queryshortName
- short version of the name
This task will query the current result (SUCCESS or FAIL) for every location for every monitor. It publishes the response data in the same format as this Synthetics Plugin as well as sending the data as Insights events.
tasks {
syntheticsCopier {
enabled = false
source.account = "defaultAccount"
dest.account = "defaultAccount"
}
}
Here are all the sections underneath tasks.metricsCopier
:
enabled
(default: false) - set to true so you can use this tasksource.account
- where you will query for data (needs to match the name of an account from the accounts section)dest.account
- where you want to publish the results (needs to match the name of an account from the accounts section)
There are multiple API systems involved, these tables have additional details.
Type | Status | Description |
---|---|---|
Rest v2 API (not Alerts) | Partial | Query apps, metric names and data and POST to Plugins |
Rest v2 API (Alerts) | Not supported yet | Alerts in a separate list because it's a large set of APIs |
Insights API | Partial | The query and insert calls are supported |
Synthetics API | Not supported yet | CRUD functionality for Synthetic Monitors |
- Servers
- Legacy Alert Policies
- Legacy Notification Channels