synthetics

package
v0.47.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 28, 2020 License: Apache-2.0 Imports: 8 Imported by: 5

Documentation

Overview

Package synthetics provides a programmatic API for interacting with the New Relic Synthetics API. It can be used for a variety of operations, including:

- Creating, reading, updating, and deleting Synthetics monitors

- Reading and updating Synthetics monitor scripts

- Associating Synthetics monitor scripts with existing Synthetics monitors

- Creating, reading, updating, and deleting Synthetics secure credentials

Synthetics labels have been EOL'd as of July 20, 2020. This functionality has been superceded by entity tags, which can be provisioned via the `entities` package. More information can be found here:

https://discuss.newrelic.com/t/end-of-life-notice-synthetics-labels-and-synthetics-apm-group-by-tag/103781

Authentication

You will need a Personal API key to communicate with the backend New Relic API that provides this functionality. See the API key documentation below for more information on how to locate this keys:

https://docs.newrelic.com/docs/apis/get-started/intro-apis/types-new-relic-api-keys

Package synthetics provides a programmatic API for interacting with the New Relic Synthetics product.

Example (Monitor)
// Initialize the client configuration. A Personal API key is required to
// communicate with the backend API.
cfg := config.New()
cfg.PersonalAPIKey = os.Getenv("NEW_RELIC_API_KEY")

// Initialize the client.
client := New(cfg)

// Create a simple Synthetics monitor.
simpleMonitor := Monitor{
	Name:         "Example monitor",
	Type:         MonitorTypes.Ping,
	Status:       MonitorStatus.Enabled,
	SLAThreshold: 2.0,
	URI:          "https://www.example.com",
	Frequency:    5,
	Locations:    []string{"AWS_US_EAST_1"},
}

created, err := client.CreateMonitor(simpleMonitor)
if err != nil {
	log.Fatal("error creating Synthetics monitor: ", err)
}

// Create a scripted browser monitor.
scriptedBrowser := Monitor{
	Name:         "Example scriptied browser monitor",
	Type:         MonitorTypes.ScriptedBrowser,
	Status:       MonitorStatus.Enabled,
	SLAThreshold: 2.0,
	URI:          "https://www.example.com",
	Frequency:    1440,
	Locations:    []string{"AWS_US_EAST_1", "AWS_US_WEST_1"},
}

monitorScript := MonitorScript{
	Text: `
var assert = require("assert");
$browser.get("http://www.example.com").then(function(){ 

	// Check the H1 title matches "Example Domain" 
	return $browser.findElement($driver.By.css("h1")).then(function(element){ 
		return element.getText().then(function(text){ 
		assert.equal("Example Domain", text, "Page H1 title did not match"); 
		}); 
	}); 
})`,
}

created, err = client.CreateMonitor(scriptedBrowser)
if err != nil {
	log.Fatal("error creating Synthetics monitor: ", err)
}

_, err = client.UpdateMonitorScript(created.ID, monitorScript)
if err != nil {
	log.Fatal("error updating Synthetics monitor script: ", err)
}

// Update an existing Synthetics monitor script.
created.Locations = []string{"AWS_US_WEST_1"}

updated, err := client.UpdateMonitor(*created)
if err != nil {
	log.Fatal("error updating Synthetics monitor: ", err)
}

// Delete an existing Synthetics monitor script.
err = client.DeleteMonitor(updated.ID)
if err != nil {
	log.Fatal("error deleting Synthetics monitor: ", err)
}

// Get all valid Synthetics monitor locations.
locations, err := client.GetMonitorLocations()
if err != nil {
	log.Fatal("error retrieving valid Synthetics monitor locations: ", err)
}

log.Printf("found %d valid Synthetics monitor locations", len(locations))
Output:

Example (SecureCredentials)
// Initialize the client configuration.
cfg := config.New()
cfg.PersonalAPIKey = os.Getenv("NEW_RELIC_API_KEY")

// Initialize the client.
client := New(cfg)

// Get the Synthetics secure credentials for this account.
credentials, err := client.GetSecureCredentials()
if err != nil {
	log.Fatal("error getting Synthetics secure credentials: ", err)
}

// Get a single Synthetics secure credential belonging to this account.
credential, err := client.GetSecureCredential(credentials[0].Key)
if err != nil {
	log.Fatal("error getting Synthetics secure credential: ", err)
}

// Add a secure credential for use with Synthetics.
credential, err = client.AddSecureCredential("key", "value", "description")
if err != nil {
	log.Fatal("error adding Synthetics secure credential: ", err)
}

// Delete a Synthetics secure credential.
err = client.DeleteSecureCredential(credential.Key)
if err != nil {
	log.Fatal("error deleting Synthetics secure credential: ", err)
}
Output:

Index

Examples

Constants

This section is empty.

Variables

View Source
var (
	// MonitorTypes specifies the possible types for a Synthetics monitor.
	MonitorTypes = struct {
		Ping            MonitorType
		Browser         MonitorType
		ScriptedBrowser MonitorType
		APITest         MonitorType
	}{
		Ping:            "SIMPLE",
		Browser:         "BROWSER",
		ScriptedBrowser: "SCRIPT_BROWSER",
		APITest:         "SCRIPT_API",
	}

	// MonitorStatus specifies the possible Synthetics monitor status types.
	MonitorStatus = struct {
		Enabled  MonitorStatusType
		Muted    MonitorStatusType
		Disabled MonitorStatusType
	}{
		Enabled:  "ENABLED",
		Muted:    "MUTED",
		Disabled: "DISABLED",
	}
)

Functions

This section is empty.

Types

type ErrorDetail

type ErrorDetail struct {
	Message string `json:"error,omitempty"`
}

ErrorDetail represents an single error from New Relic Synthetics.

type ErrorResponse

type ErrorResponse struct {
	Message            string        `json:"error,omitempty"`
	Messages           []ErrorDetail `json:"errors,omitempty"`
	ServerErrorMessage string        `json:"message,omitempty"`
}

ErrorResponse represents an error response from New Relic Synthetics.

func (*ErrorResponse) Error

func (e *ErrorResponse) Error() string

Error surfaces an error message from the New Relic Synthetics error response.

func (*ErrorResponse) IsNotFound added in v0.21.1

func (e *ErrorResponse) IsNotFound() bool

func (*ErrorResponse) IsTimeout added in v0.47.0

func (e *ErrorResponse) IsTimeout() bool

func (*ErrorResponse) New added in v0.13.0

func (e *ErrorResponse) New() http.ErrorResponse

New creates a new instance of ErrorResponse.

type Monitor

type Monitor struct {
	ID           string            `json:"id,omitempty"`
	Name         string            `json:"name"`
	Type         MonitorType       `json:"type"`
	Frequency    uint              `json:"frequency"`
	URI          string            `json:"uri"`
	Locations    []string          `json:"locations"`
	Status       MonitorStatusType `json:"status"`
	SLAThreshold float64           `json:"slaThreshold"`
	UserID       uint              `json:"userId,omitempty"`
	APIVersion   string            `json:"apiVersion,omitempty"`
	ModifiedAt   *Time             `json:"modifiedAt,omitempty"`
	CreatedAt    *Time             `json:"createdAt,omitempty"`
	Options      MonitorOptions    `json:"options,omitempty"`
}

Monitor represents a New Relic Synthetics monitor.

type MonitorLabel added in v0.10.0

type MonitorLabel struct {
	Type  string `json:"type"`
	Value string `json:"value"`
	Href  string `json:"href"`
}

MonitorLabel represents a single label for a New Relic Synthetics monitor.

type MonitorLocation added in v0.32.0

type MonitorLocation struct {
	HighSecurityMode bool   `json:"highSecurityMode"`
	Private          bool   `json:"private"`
	Name             string `json:"name"`
	Label            string `json:"label"`
	Description      string `json:"description"`
}

MonitorLocation represents a valid location for a New Relic Synthetics monitor.

type MonitorOptions

type MonitorOptions struct {
	ValidationString       string `json:"validationString,omitempty"`
	VerifySSL              bool   `json:"verifySSL,omitempty"`
	BypassHEADRequest      bool   `json:"bypassHEADRequest,omitempty"`
	TreatRedirectAsFailure bool   `json:"treatRedirectAsFailure,omitempty"`
}

MonitorOptions represents the options for a New Relic Synthetics monitor.

type MonitorScript

type MonitorScript struct {
	Text      string                  `json:"scriptText"`
	Locations []MonitorScriptLocation `json:"scriptLocations"`
}

MonitorScript represents a New Relic Synthetics monitor script.

type MonitorScriptLocation

type MonitorScriptLocation struct {
	Name string `json:"name"`
	HMAC string `json:"hmac"`
}

MonitorScriptLocation represents a New Relic Synthetics monitor script location.

type MonitorStatusType

type MonitorStatusType string

MonitorStatusType represents a Synthetics monitor status type.

type MonitorType

type MonitorType string

MonitorType represents a Synthetics monitor type.

type SecureCredential added in v0.10.0

type SecureCredential struct {
	Key         string `json:"key"`
	Description string `json:"description"`
	Value       string `json:"value"`
	CreatedAt   *Time  `json:"createdAt"`
	LastUpdated *Time  `json:"lastUpdated"`
}

SecureCredential represents a Synthetics secure credential.

type Synthetics

type Synthetics struct {
	// contains filtered or unexported fields
}

Synthetics is used to communicate with the New Relic Synthetics product.

func New

func New(config config.Config) Synthetics

New is used to create a new Synthetics client instance.

func (*Synthetics) AddMonitorLabel deprecated added in v0.10.0

func (s *Synthetics) AddMonitorLabel(monitorID, labelKey, labelValue string) error

AddMonitorLabel is used to add a label to a given monitor.

Deprecated: Use entities.AddTags instead. https://discuss.newrelic.com/t/end-of-life-notice-synthetics-labels-and-synthetics-apm-group-by-tag/103781

func (*Synthetics) AddSecureCredential added in v0.10.0

func (s *Synthetics) AddSecureCredential(key, value, description string) (*SecureCredential, error)

AddSecureCredential is used to add a secure credential to your New Relic account.

func (*Synthetics) CreateMonitor

func (s *Synthetics) CreateMonitor(monitor Monitor) (*Monitor, error)

CreateMonitor is used to create a New Relic Synthetics monitor.

func (*Synthetics) DeleteMonitor

func (s *Synthetics) DeleteMonitor(monitorID string) error

DeleteMonitor is used to delete a New Relic Synthetics monitor.

func (*Synthetics) DeleteMonitorLabel deprecated added in v0.10.0

func (s *Synthetics) DeleteMonitorLabel(monitorID, labelKey, labelValue string) error

DeleteMonitorLabel deletes a key:value label from the given Syntheics monitor.

Deprecated: Use entities.DeleteTags instead. https://discuss.newrelic.com/t/end-of-life-notice-synthetics-labels-and-synthetics-apm-group-by-tag/103781

func (*Synthetics) DeleteSecureCredential added in v0.10.0

func (s *Synthetics) DeleteSecureCredential(key string) error

DeleteSecureCredential deletes a secure credential from your New Relic account.

func (*Synthetics) GetMonitor

func (s *Synthetics) GetMonitor(monitorID string) (*Monitor, error)

GetMonitor is used to retrieve a specific New Relic Synthetics monitor.

func (*Synthetics) GetMonitorLabels deprecated added in v0.10.0

func (s *Synthetics) GetMonitorLabels(monitorID string) ([]*MonitorLabel, error)

GetMonitorLabels is used to retrieve all labels for a given Synthetics monitor.

Deprecated: Use entities.ListTags instead. https://discuss.newrelic.com/t/end-of-life-notice-synthetics-labels-and-synthetics-apm-group-by-tag/103781

func (*Synthetics) GetMonitorLocations added in v0.32.0

func (s *Synthetics) GetMonitorLocations() ([]*MonitorLocation, error)

GetMonitorLocations is used to retrieve all valid locations for Synthetics monitors.

func (*Synthetics) GetMonitorScript

func (s *Synthetics) GetMonitorScript(monitorID string) (*MonitorScript, error)

GetMonitorScript is used to retrieve the script that belongs to a New Relic Synthetics scripted monitor.

func (*Synthetics) GetSecureCredential added in v0.10.0

func (s *Synthetics) GetSecureCredential(key string) (*SecureCredential, error)

GetSecureCredential is used to retrieve a specific secure credential from your New Relic account.

func (*Synthetics) GetSecureCredentials added in v0.10.0

func (s *Synthetics) GetSecureCredentials() ([]*SecureCredential, error)

GetSecureCredentials is used to retrieve all secure credentials from your New Relic account.

func (*Synthetics) ListMonitors

func (s *Synthetics) ListMonitors() ([]*Monitor, error)

ListMonitors is used to retrieve New Relic Synthetics monitors.

func (*Synthetics) UpdateMonitor

func (s *Synthetics) UpdateMonitor(monitor Monitor) (*Monitor, error)

UpdateMonitor is used to update a New Relic Synthetics monitor.

func (*Synthetics) UpdateMonitorScript

func (s *Synthetics) UpdateMonitorScript(monitorID string, script MonitorScript) (*MonitorScript, error)

UpdateMonitorScript is used to add a script to an existing New Relic Synthetics monitor_script.

func (*Synthetics) UpdateSecureCredential added in v0.10.0

func (s *Synthetics) UpdateSecureCredential(key, value, description string) (*SecureCredential, error)

UpdateSecureCredential is used to update a secure credential in your New Relic account.

type Time

type Time time.Time

Time is a type used for unmarshaling timestamps generated by the Synthetics API. Its underlying type is time.Time.

func (Time) Equal

func (t Time) Equal(u Time) bool

Equal provides a comparator for the Time type.

func (Time) MarshalJSON

func (t Time) MarshalJSON() ([]byte, error)

MarshalJSON is responsible for marshaling the Time type.

func (*Time) UnmarshalJSON

func (t *Time) UnmarshalJSON(s []byte) (err error)

UnmarshalJSON is responsible for unmarshaling the Time type.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL