Add a private probe through Docker
Install the Private Probe as a single Docker container on a host or in a simple container environment.
Before getting started, make sure you have the prerequisites to install the Private Probe. See Private Probe requirements.
Prerequisites
Before you are able to run a private probe on Docker, you have to complete the following prerequisites.
Install Docker and download the Docker image
Before installing your private probe, you must have Docker installed, and you need to download the Docker image.
-
Install Docker. For information about installing Docker, see the Docker instructions.
-
Download the Docker image https://hub.docker.com/r/solarwinds/synthetics-private-probe.
Test your Docker installation
-
Run a simple container to confirm Docker is installed and can run containers.
docker run --rm hello-world
Create the API token
To create a new ingestion token:
-
In SolarWinds Observability, click Settings > API Tokens.
-
Click Create API token.
-
Enter a name and select the Ingestion as the token type
-
Click Create API Token.
See API tokens for complete instructions.
To reuse an existing ingestion token:
-
In SolarWinds Observability, click Settings > API Tokens.
-
Click the three dots (⋯) next to an existing Ingestion token and select Copy Token to copy it to the clipboard.
Create an in SolarWinds Observability that will be used to configure your private probe.
Identify the correct Synthetics Collector endpoint
The following URLs are used by the private probe to retrieve check schedules and submit check results to the Synthetics-Collector service through gRPC protocol.
-
synthetics.collector.na-01.cloud.solarwinds.com
-
synthetics.collector.na-02.cloud.solarwinds.com
-
synthetics.collector.eu-01.cloud.solarwinds.com
-
synthetics.collector.ap-01.cloud.solarwinds.com
The xx-yy part of the hostname must match the data center in the URL you use to access SolarWinds Observability. For example:
-
If you log in at https://my.na-01.cloud.solarwinds.com, you would use synthetics.collector.na-01.cloud.solarwinds.com.
-
If you log in at https://my.eu-01.cloud.solarwinds.com, you would use synthetics.collector.eu-01.cloud.solarwinds.com.
See the endpoint system requirements to determine which endpoint is correct for your organization.
Configure the private probe
The Private Probe can be configured in two ways:
-
From a yaml configuration file inside of the Docker Container
-
From environment variables in the configuration file
By default, the Private Probe looks for the configuration file at /app/config/private-probe.yaml. You can mount this file from your host into the container. You can also override any configuration value using an environment variable.
Required Configuration variables
The following environment variables are required in the Private Probe yaml configuration file.
| Friendly name | Environment Variable Name | Required | Description |
|---|---|---|---|
| Synthetics Collector URL | SYNTHETICS_COLLECTOR_URL
|
Yes | Specifies the URL of the Synthetics Collector service where the probe will connect. For example, synthetics.collector.na-01.cloud.solarwinds.com:443. |
| Ingestion API token | API_TOKEN
|
Yes | Specifies the ingestion token you created in SolarWinds Observabilitythat's used to authenticate the probe with Synthetics Collector. |
| Local ID | LOCAL_ID
|
Yes |
User defined unique identifier for the private probe which allows the probe to bind a running container instance in SolarWinds Observability.
|
| Probe name | NAME
|
Yes |
User defined name for the probe visible in SolarWinds Observability. You can change this later. If
LOCAL_ID stays the same, updating NAME renames the existing probe. |
Optional advanced configuration variables
The following environment configuration variables are optional in the Private Probe yaml configuration file.
| Environment Variable Name | Required | Default Value | Description |
|---|---|---|---|
LOG_LEVEL
|
No | INFO |
Specifies the verbosity level of log messages generated by the probe
|
FETCH_PERIODIC_SCHEDULE_INTERVAL
|
No | 60 seconds (s) | Specifies the interval at which the probe fetches the periodic schedule from the Synthetics Collector. |
FETCH_ONE_TIME_SCHEDULE_INTERVAL
|
No | 30 seconds (s) | Specifies the interval at which the probe fetches the one-time schedule from the Synthetics Collector. |
RESEND_RESULTS_INTERVAL
|
No | 60 seconds (s) | Specifies the interval at which the probe will try to resend results that failed to be sent by the Synthetics Collector. |
RESULTS_BUFFER_LIMIT
|
No | 10000 | Specifies the maximum number of results that are stored for send attempts. |
API_CLIENT_TIMEOUT
|
No | 30 seconds (s) | Specifies timeout for communication with Synthetics Collector. |
EXTERNAL_EXECUTOR_HARD_TIMEOUT
|
No | 61 seconds (s) | Specifies the hard timeout for the check executor. |
TRANSACTION_EXECUTOR_HARD_TIMEOUT
|
No | 65 seconds (s) | Specifies the hard timeout for the transaction executor. |
EXECUTOR_SOFT_TIMEOUT_EXTENSION
|
No | 5 seconds (s) | Specifies the soft timeout for the check executor. (This value is added to the executor hard timeout and to the transaction executor hard timeout). |
BINARY_SIZE_LIMIT_MB
|
No | 1 | Specifies the binary output limit for the transaction executor in megabytes (mb). |
Example YAML Configuration
private-probe:
information:
local_id: "local-private-probe"
name: "My local private probe"
options:
synthetics_collector_url: "synthetics.collector.xx.cloud.solarwinds.com:443"
api_token: "INGESTION_TOKEN"
log_level: "INFO"
fetch_periodic_schedule_interval: 60s
fetch_one_time_schedule_interval: 60s
resend_results_interval: 60s
results_buffer_limit: 10000
api_client_timeout: 30s
executor_soft_timeout_extension: 5s
external_executor_hard_timeout: 60s
transaction_executor_hard_timeout: 65s
binary_size_limit_mb: 1
Add your Private Probe through Docker
The Digital Experience private probe is a single docker image that can be added in a container environment with environment variables, or by mounting a configuration file.
Option 1: Run the Private Probe with environment variables
Use the latest probe image to run your Private Probe.
docker run -d \
-e SYNTHETICS_COLLECTOR_URL='synthetics.collector.xx-xx.cloud.solarwinds.com:443' \
-e API_TOKEN='INGESTION_TOKEN' \
-e LOG_LEVEL='INFO' \
-e LOCAL_ID='local-private-probe' \
-e NAME='My local private probe' \
solarwinds/synthetics-private-probe:latest
-
Replace
synthetics.collector.xx-xx.cloud.solarwinds.com:443with your organization’s collector endpoint. -
Replace
INGESTION_TOKENwith your ingestion API token created in SolarWinds Observability. -
Enter a unique
LOCAL_IDfor your probe instance. -
Enter a descriptive
NAMEthat you can easily identify.
Option 2: Run the Private Probe with a configuration file
-
Save your configuration file as private-probe.yaml in a Directory on the Docker host.
-
Run the container and mount the file.
docker run -d \
-e PRIVATE_PROBE_CONFIG_FILE=/app/private-probe.yaml \
-v ./config/private-probe.yaml:/app/private-probe.yaml \
solarwinds/synthetics-private-probe:latest
Verify your Private Probe is running
-
Open a new terminal window.
-
Execute the following to list running containers.
docker ps
-
Confirm that a container based on
solarwinds/synthetics-private-probe:latestis listed and has a STATUS ofUp. -
In SolarWinds Observability, go to Digital Experience > Probes > Private Probes. Verify that your probe appears, shows a Connected status, and can be selected when configuring synthetic checks.
Optional: update trusted certificate authorities (cacert.pem)
The private probe uses the cacert.pem file to validate remote HTTPS certificates against trusted root Certificate Authorities (CAs).
A newer image typically includes an updated cacert.pem, but it may still lag behind the very latest CA list. In rare cases where you must immediately trust recently added or custom CAs, you can add your own cacert.pem file to the container.
To fetch the latest CA bundle from the cURL project:
curl https://curl.se/ca/cacert.pem -o ./cacert.pem
Execute the following to run the container and mount your custom cacert.pem.
docker run -d \
-e SYNTHETICS_COLLECTOR_URL='synthetics.collector.xx-xx.cloud.solarwinds.com:443' \
-e API_TOKEN='INGESTION_TOKEN' \
-e LOG_LEVEL='INFO' \
-e LOCAL_ID='local-private-probe' \
-e NAME='My local private probe' \
-v ./cacert.pem:/app/cacert.pem \
solarwinds/synthetics-private-probe:latest
/app/cacert.pem and overrides the default bundle.