Skip to main content

Origins and health checks

Use Origins to manage upstream groups, add origin members and inspect health checks.

Note: Balancer is in beta. Endpoints, fields and behavior may change before general availability, and the feature must be enabled on your account before use. Contact your NetActuate account manager to request access.

Before you begin​

Choose the account that owns the resources. Use a credential with write access when changing configuration.

Upstream groups​

Upstream groups

Manage reusable pools of origin servers.

  1. Open Origins, then Upstream groups.
  2. Select New upstream group to create a pool, or open an existing pool.
  3. Use Automatically re-sort to control list reordering. Verify the pool before binding it to an application or route.

Verify with the API​

Use the API host shown in the Balancer portal in place of https://<your-api-host>. Set $BALANCER_API_KEY to your credential for this context.

curl --fail-with-body --silent --show-error --request GET \
--url "https://<your-api-host>/upstream-groups" \
--header "x-api-key: $BALANCER_API_KEY"

Expect HTTP 200 with code set to 200. The response includes data.meta.total, data.meta.offset, data.meta.limit, data.meta.suggestedFilters. Compare the returned configuration with the screen. A successful configuration read does not verify that an edge has applied it.

API reference: List upstream groups associated with your account.

Create or edit an upstream group​

Create or edit an upstream group

Configure pool identity, connection behavior, health checks and performance thresholds. Members are added from the pool page.

  1. Select New upstream group or Edit group. Enter Name and optional Description, Connect timeout and Panic threshold.
  2. Select Continue to review Health Checks and Performance. These steps are optional; review the final action before saving.
  3. Select Create Upstream Group when creating or Save Changes when editing. Reopen the pool to verify the saved settings. When editing, skipped performance settings retain their stored values.
FieldRequiredDescriptionMatching API field
NameYesUsed in route bindings and in the API. Renaming does not break bindings.name
DescriptionNoShown wherever this pool is listeddescription
Connect timeoutNoHow long to wait for a TCP connection. 1-120000 API default: 5000 ms.connectTimeoutMilliseconds
Panic thresholdNoBelow this, every member is sent traffic. 0-100 API default: 50%.healthyPanicThreshold
Active probingNoProbe each member from every locationhealthCheck.active.enabled
TypeNoHow each location probes the memberhealthCheck.active.type
PathNoRequested on every probehealthCheck.active.path
Host headerNoSent with the probehealthCheck.active.domain
Probe portNoDefaults to the member porthealthCheck.active.port
MethodNoGET reads the body; HEAD does nothealthCheck.active.httpMethod
Expected statusNoThe response codes that count as passinghealthCheck.active.httpAllowedStatusCodes
Body must containNoChecked only when the status passeshealthCheck.active.matchHttpString
IntervalNoBetween probes, from each locationhealthCheck.active.intervalSeconds
TimeoutNoA probe that takes longer has failedhealthCheck.active.timeoutMilliseconds
Failures to ejectNoIn a row, at one locationhealthCheck.active.minimumConsecutiveFailures
Successes to restoreNoIn a row, at one locationhealthCheck.active.minimumConsecutiveSuccesses
Tries per checkNoRetries inside a single probehealthCheck.active.triesPerCheck
Retry delayNoBetween tries inside one probehealthCheck.active.retryDelaySeconds
Follow redirectsNo0 means a redirect is a failurehealthCheck.active.maxRedirects
Probe over TLSNoThe probe itself, not traffic to the memberhealthCheck.active.enableSsl
Accept an untrusted certificateNoOn the probe connection onlyhealthCheck.active.allowInsecureHttps
Client certificateNoPresented by the probehealthCheck.active.mtlsClientCertificateId
Agreement between locationsNoHow many locations must agree a member is deadhealthCheck.active.localityRequirement
Answer must contain the member IPNoDNS probes onlyhealthCheck.active.dnsRequireUpstreamIp
Eject on live traffic errorsNoOn real requests, between active probeshealthCheck.passive.enabled
Consecutive 5xxNoBefore the member is ejectedhealthCheck.passive.maxFails
Ejection timeNoRestored by the next passing probehealthCheck.passive.failDuration
Failure windowNoThe window the failures are counted inhealthCheck.passive.maxFailDurationMs
Statuses that countNoBlank means every 5xxhealthCheck.passive.statuses
Exclusion onNoMakes a member ineligible, not unhealthyperformanceThresholds.enabled
Must satisfyNoWhich thresholds a member has to meetperformanceThresholds.upstreamFiltering
Exclude missing reportsNoLeft out of the window, not read as zeroperformanceThresholds.excludeMissingReports
Probe windowNoSet the displayed option.. 1-10080performanceThresholds.probeWindowMinutes
Keep fastestNoSet the displayed option.. 1-100performanceThresholds.minimumResponseTimePercent
Slowest allowedNoSet the displayed option.. 1-300000performanceThresholds.maximumResponseTimeMs
Minimum uptimeNoSet the displayed option.. 1-100performanceThresholds.minimumUptimePercent

API equivalent​

Create an upstream group with the API defaults: connect timeout 5000 ms and panic threshold 50%. Use the API host shown in the Balancer portal in place of https://<your-api-host>. Set $BALANCER_API_KEY to your credential for this context.

curl --fail-with-body --silent --show-error --request POST \
--url "https://<your-api-host>/upstream-groups" \
--header "x-api-key: $BALANCER_API_KEY" \
--header "Content-Type: application/json" \
--data '{"name":"example.com"}'

Expect HTTP 200 with code set to 200. The response acknowledges the stored change. Reopen the portal screen or run the read example below to verify it.

API reference: Creates a new upstream group (backend pool).

Verify with the API​

Use the API host shown in the Balancer portal in place of https://<your-api-host>. Set $BALANCER_API_KEY to your credential for this context.

curl --fail-with-body --silent --show-error --request GET \
--url "https://<your-api-host>/upstream-groups" \
--header "x-api-key: $BALANCER_API_KEY"

Expect HTTP 200 with code set to 200. The response includes data.meta.total, data.meta.offset, data.meta.limit, data.meta.suggestedFilters. Compare the returned configuration with the screen. A successful configuration read does not verify that an edge has applied it.

API reference: List upstream groups associated with your account.

Upstream group members​

Upstream group members

Manage pool members and review health measurements and events.

  1. Open an upstream group. Select Add upstream, enter the target and optional metadata, then submit.
  2. Verify the member in Members. Use Enabled to change whether the member is selected.
  3. Select Edit group for pool settings. Review Who can reach this pool before changing access.
FieldRequiredDescriptionMatching API field
Reached byYesIP address or Hostname. Target type is fixed at creation.targetType
IP addressFor IP targetsValid IP address.address
HostnameFor hostname targetsOrigin hostname.domain
NameNoUp to 64 characters.name
Health check addressNoAlternate address used for probes.healthCheckExternalAddress

Verify with the API​

Use the API host shown in the Balancer portal in place of https://<your-api-host>. Set $BALANCER_API_KEY to your credential for this context. Set $UPSTREAM_GROUP_ID to the resource identifiers you want to inspect.

curl --fail-with-body --silent --show-error --request GET \
--url "https://<your-api-host>/upstream-groups/$UPSTREAM_GROUP_ID" \
--header "x-api-key: $BALANCER_API_KEY"

Expect HTTP 200 with code set to 200. The response includes data.upstreamGroupId, data.name, data.description, data.connectTimeoutMilliseconds. Compare the returned configuration with the screen. A successful configuration read does not verify that an edge has applied it.

API reference: Get an upstream group.

Create or edit an upstream group (alternate view 2)​

Create or edit an upstream group

Configure pool identity, connection behavior, health checks and performance thresholds. Members are added from the pool page.

  1. Select New upstream group or Edit group. Enter Name and optional Description, Connect timeout and Panic threshold.
  2. Select Continue to review Health Checks and Performance. These steps are optional; review the final action before saving.
  3. Select Create Upstream Group when creating or Save Changes when editing. Reopen the pool to verify the saved settings. When editing, skipped performance settings retain their stored values.
FieldRequiredDescriptionMatching API field
NameYesUsed in route bindings and in the API. Renaming does not break bindings.name
DescriptionNoShown wherever this pool is listeddescription
Connect timeoutNoHow long to wait for a TCP connection. 1-120000 API default: 5000 ms.connectTimeoutMilliseconds
Panic thresholdNoBelow this, every member is sent traffic. 0-100 API default: 50%.healthyPanicThreshold
Active probingNoProbe each member from every locationhealthCheck.active.enabled
TypeNoHow each location probes the memberhealthCheck.active.type
PathNoRequested on every probehealthCheck.active.path
Host headerNoSent with the probehealthCheck.active.domain
Probe portNoDefaults to the member porthealthCheck.active.port
MethodNoGET reads the body; HEAD does nothealthCheck.active.httpMethod
Expected statusNoThe response codes that count as passinghealthCheck.active.httpAllowedStatusCodes
Body must containNoChecked only when the status passeshealthCheck.active.matchHttpString
IntervalNoBetween probes, from each locationhealthCheck.active.intervalSeconds
TimeoutNoA probe that takes longer has failedhealthCheck.active.timeoutMilliseconds
Failures to ejectNoIn a row, at one locationhealthCheck.active.minimumConsecutiveFailures
Successes to restoreNoIn a row, at one locationhealthCheck.active.minimumConsecutiveSuccesses
Tries per checkNoRetries inside a single probehealthCheck.active.triesPerCheck
Retry delayNoBetween tries inside one probehealthCheck.active.retryDelaySeconds
Follow redirectsNo0 means a redirect is a failurehealthCheck.active.maxRedirects
Probe over TLSNoThe probe itself, not traffic to the memberhealthCheck.active.enableSsl
Accept an untrusted certificateNoOn the probe connection onlyhealthCheck.active.allowInsecureHttps
Client certificateNoPresented by the probehealthCheck.active.mtlsClientCertificateId
Agreement between locationsNoHow many locations must agree a member is deadhealthCheck.active.localityRequirement
Answer must contain the member IPNoDNS probes onlyhealthCheck.active.dnsRequireUpstreamIp
Eject on live traffic errorsNoOn real requests, between active probeshealthCheck.passive.enabled
Consecutive 5xxNoBefore the member is ejectedhealthCheck.passive.maxFails
Ejection timeNoRestored by the next passing probehealthCheck.passive.failDuration
Failure windowNoThe window the failures are counted inhealthCheck.passive.maxFailDurationMs
Statuses that countNoBlank means every 5xxhealthCheck.passive.statuses
Exclusion onNoMakes a member ineligible, not unhealthyperformanceThresholds.enabled
Must satisfyNoWhich thresholds a member has to meetperformanceThresholds.upstreamFiltering
Exclude missing reportsNoLeft out of the window, not read as zeroperformanceThresholds.excludeMissingReports
Probe windowNoSet the displayed option.. 1-10080performanceThresholds.probeWindowMinutes
Keep fastestNoSet the displayed option.. 1-100performanceThresholds.minimumResponseTimePercent
Slowest allowedNoSet the displayed option.. 1-300000performanceThresholds.maximumResponseTimeMs
Minimum uptimeNoSet the displayed option.. 1-100performanceThresholds.minimumUptimePercent

API equivalent​

Update the pool connection timeout. Use the API host shown in the Balancer portal in place of https://<your-api-host>. Set $BALANCER_API_KEY to your credential for this context. Set $UPSTREAM_GROUP_ID to the selected resources.

curl --fail-with-body --silent --show-error --request PATCH \
--url "https://<your-api-host>/upstream-groups/$UPSTREAM_GROUP_ID" \
--header "x-api-key: $BALANCER_API_KEY" \
--header "Content-Type: application/json" \
--data '{"connectTimeoutMilliseconds":5000}'

Expect HTTP 200 with code set to 200. The response acknowledges the stored change. Reopen the portal screen or run the read example below to verify it.

API reference: Update an upstream group configuration.

Verify with the API​

Use the API host shown in the Balancer portal in place of https://<your-api-host>. Set $BALANCER_API_KEY to your credential for this context. Set $UPSTREAM_GROUP_ID to the resource identifiers you want to inspect.

curl --fail-with-body --silent --show-error --request GET \
--url "https://<your-api-host>/upstream-groups/$UPSTREAM_GROUP_ID" \
--header "x-api-key: $BALANCER_API_KEY"

Expect HTTP 200 with code set to 200. The response includes data.upstreamGroupId, data.name, data.description, data.connectTimeoutMilliseconds. Compare the returned configuration with the screen. A successful configuration read does not verify that an edge has applied it.

API reference: Get an upstream group.

Upstream details​

Upstream details

Inspect one origin member and its health by location.

  1. Open the pool and select a member. Review Health by location and Events.
  2. Select Disable this upstream to take it out of selection. Verify the disabled state after the next configuration update. There is no timed drain or wait for open connections.
  3. Select Back to pool to review the other members.

Verify with the API​

Use the API host shown in the Balancer portal in place of https://<your-api-host>. Set $BALANCER_API_KEY to your credential for this context. Set $UPSTREAM_GROUP_ID, $UPSTREAM_ID to the resource identifiers you want to inspect.

curl --fail-with-body --silent --show-error --request GET \
--url "https://<your-api-host>/upstream-groups/$UPSTREAM_GROUP_ID/upstreams/$UPSTREAM_ID" \
--header "x-api-key: $BALANCER_API_KEY"

Expect HTTP 200 with code set to 200. The response includes data.upstreamId, data.name, data.description, data.targetType. Compare the returned configuration with the screen. A successful configuration read does not verify that an edge has applied it.

API reference: Get details of a single upstream.

All upstreams​

All upstreams

Inspect origin members across the account.

  1. Open Origins, then Upstreams.
  2. Review Upstream, Upstream group, Reached by and Status. Open a pool to manage its members.

Verify with the API​

Use the API host shown in the Balancer portal in place of https://<your-api-host>. Set $BALANCER_API_KEY to your credential for this context.

curl --fail-with-body --silent --show-error --request GET \
--url "https://<your-api-host>/upstream-groups" \
--header "x-api-key: $BALANCER_API_KEY"

Expect HTTP 200 with code set to 200. The response includes data.meta.total, data.meta.offset, data.meta.limit, data.meta.suggestedFilters. Compare the returned configuration with the screen. A successful configuration read does not verify that an edge has applied it.

API reference: List upstream groups associated with your account.

Health checks​

Health checks

Review checks across upstream groups and open the pool that owns a check.

  1. Under Origins, select Health checks.
  2. Use Filter, then select Expand all to inspect the checks.
  3. Select Refresh and open an upstream group to change its embedded health check.

Verify with the API​

Use the API host shown in the Balancer portal in place of https://<your-api-host>. Set $BALANCER_API_KEY to your credential for this context.

curl --fail-with-body --silent --show-error --request GET \
--url "https://<your-api-host>/upstream-groups" \
--header "x-api-key: $BALANCER_API_KEY"

Expect HTTP 200 with code set to 200. The response includes data.meta.total, data.meta.offset, data.meta.limit, data.meta.suggestedFilters. Compare the returned configuration with the screen. A successful configuration read does not verify that an edge has applied it.

API reference: List upstream groups associated with your account.