A Singapore Government Agency Website

SOA synthetic monitoring deployment

SOA has evolved into StackOps Resiliency Accelerator (SORA) and will be deprecated by 31 Aug 2026. Learn more in StackOps Resiliency Accelerator (SORA).

Provided by StackOps Observability Accelerator (SOA), SOA synthetic monitoring is a feature that enables you to automatically discover resources in your AWS environment and deploy synthetic monitors for them.

Synthetic monitoring enables proactive testing of your infrastructure by running HTTP, TCP, or ICMP checks against discovered endpoints. This helps you detect failures and performance issues before they affect users.

Getting started

Prerequisites:
- SOA is installed

To use the SOA synthetic monitoring feature, refer to SOA documentation for the detailed implementation steps.

How it works

Here is an overview of how SOA synthetic monitoring works:

  1. SOA discovers resources in your AWS environment.
  2. SOA deploys synthetic monitors for discovered resources.

Step 1: Resource discovery

SOA scans your AWS account to find resources that can be monitored, including:

  • Route53 endpoints
  • VPC Endpoints (VPCE)
  • Public/Private URLs

The results of the discovery step are written into the following output files:

  • synthetic-configs.json—The main configuration file for deploying synthetic monitors, defining:
    • Where Elastic Agents will be deployed (ECS or EC2).
    • The Fleet policy and scaling configuration.
    • Which endpoints (Route53, VPCE, etc.) to monitor.
    • The synthetic monitor type: http, tcp, or icmp.
  • discovery-synthetic-hosted-zones.json—The detailed discovery records.
  • discovery-synthetic-hosted-zones.txt—The text summary of hosted zones.

Note: By default, discovered records are configured for HTTP synthetics. You can extend them to include TCP and ICMP by modifying the synthetic-configs.json.

Step 2: Synthetic monitor deployment

Using the JSON configuration file, SOA deploys Elastic Agents on ECS or EC2 to run synthetic monitors. These monitors are integrated with the Kibana UI, where you can view results, alerts, and dashboards.

Example configuration files

Here is an excerpt from synthetic-configs.json, showing how ECS and Route53 records are configured:

{
  "version": 2,
  "elastic_agent_deploy_configs": {
    "ecs": {
      "cluster_configs": {
        "aws_ecs_cluster_name": "soa-synthetic-elastic-agents-${SOA_SUFFIX}",
        "aws_ecs_vpc_id": "${SOA_VPC_ID}"
      },
      "elastic_agent_configs": {
        "soa-aws-synthetic-1": {
          "service_configs": {
            "aws_ecs_vpc_id": "${SOA_VPC_ID}",
            "elastic_agent_replicas": "${SOA_ELASTIC_AGENT_REPLICAS}",
            "elastic_agent_version": "${SOA_ELASTIC_AGENT_VERSION}",
            "elastic_agent_docker_image": "${SOA_ELASTIC_AGENT_DOCKER_IMAGE}",
            "elastic_agent_complete_image": "${SOA_ELASTIC_AGENT_COMPLETE_IMAGE}",
            "aws_ecs_task_definition_name": "soa-aws-synthetic",
            "aws_ecs_service_name": "soa-aws-synthetic",
            "aws_ecs_service_enable_execute_command": false,
            "aws_ecs_service_auto_scaling_max_replicas": "${SOA_ECS_MAX_REPLICAS}",
            "aws_ecs_service_auto_scaling_threshold": 2000,
            "aws_ecs_cpu_resource": "${SOA_ECS_CPU_RESOURCE}",
            "aws_ecs_memory_resource": "${SOA_ECS_MEMORY_RESOURCE}"
          },
          "fleet_policy_configs": {
            "name": "soa-aws-synthetic-${SOA_SUFFIX}",
            "description": "Managed by StackOps Observability Accelerator",
            "namespace": "${SOA_FLEET_NAMESPACE}",
            "monitoring_enabled": true
          }
        }
      }
    }
  },
  "elastic_synthetic_configs": {
    "route53": [
      {
        "synthetic_name": "${YOUR_SYNTHEIC_MONITOR_NAME}",
        "zoneType": "Private",
        "associatedVPCs": [
          {
            "vpcId": "${SOA_VPC_ID}",
            "region": "ap-southeast-1"
          }
        ],
        "records": {
          "CNAME": ["${URL}"]
        },
        "synthetic_type": [
          "http"
        ],
        "other_synthetic_type": ["tcp", "icmp"],
        "fleet_policy_name": "soa-aws-synthetic-${SOA_SUFFIX}",
        "space_id": "default",
        "tags": ["{example1 : p1}", "{example2 : p2}"]
      }
    ]
  }
}

You can find ready-to-use configuration file examples in the SOA examples/aws/synthetics/ repository. These examples cover:

  • Single VPC vs. Multi VPC setups
  • Deployments on ECS or EC2
  • Multiple synthetics within the same VPC
Chat with me!
Bot Launcher