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:
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 ¶
- Variables
- type ErrorDetail
- type ErrorResponse
- type Monitor
- type MonitorLabel
- type MonitorLocation
- type MonitorOptions
- type MonitorScript
- type MonitorScriptLocation
- type MonitorStatusType
- type MonitorType
- type SecureCredential
- type Synthetics
- func (s *Synthetics) AddMonitorLabel(monitorID, labelKey, labelValue string) errordeprecated
- func (s *Synthetics) AddSecureCredential(key, value, description string) (*SecureCredential, error)
- func (s *Synthetics) CreateMonitor(monitor Monitor) (*Monitor, error)
- func (s *Synthetics) DeleteMonitor(monitorID string) error
- func (s *Synthetics) DeleteMonitorLabel(monitorID, labelKey, labelValue string) errordeprecated
- func (s *Synthetics) DeleteSecureCredential(key string) error
- func (s *Synthetics) GetMonitor(monitorID string) (*Monitor, error)
- func (s *Synthetics) GetMonitorLabels(monitorID string) ([]*MonitorLabel, error)deprecated
- func (s *Synthetics) GetMonitorLocations() ([]*MonitorLocation, error)
- func (s *Synthetics) GetMonitorScript(monitorID string) (*MonitorScript, error)
- func (s *Synthetics) GetSecureCredential(key string) (*SecureCredential, error)
- func (s *Synthetics) GetSecureCredentials() ([]*SecureCredential, error)
- func (s *Synthetics) ListMonitors() ([]*Monitor, error)
- func (s *Synthetics) UpdateMonitor(monitor Monitor) (*Monitor, error)
- func (s *Synthetics) UpdateMonitorScript(monitorID string, script MonitorScript) (*MonitorScript, error)
- func (s *Synthetics) UpdateSecureCredential(key, value, description string) (*SecureCredential, error)
- type Time
Examples ¶
Constants ¶
This section is empty.
Variables ¶
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 ¶
MonitorScriptLocation represents a New Relic Synthetics monitor script location.
type MonitorStatusType ¶
type MonitorStatusType string
MonitorStatusType represents a Synthetics monitor status 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 ¶
Time is a type used for unmarshaling timestamps generated by the Synthetics API. Its underlying type is time.Time.
func (Time) MarshalJSON ¶
MarshalJSON is responsible for marshaling the Time type.
func (*Time) UnmarshalJSON ¶
UnmarshalJSON is responsible for unmarshaling the Time type.