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 valid Admin's 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 these 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. An Admin API key is required to // communicate with the backend API. cfg := config.New() cfg.AdminAPIKey = os.Getenv("NEW_RELIC_ADMIN_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. An Admin API key is required to // communicate with the backend API. cfg := config.New() cfg.AdminAPIKey = os.Getenv("NEW_RELIC_ADMIN_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) 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.