{"id":1023,"date":"2026-06-09T01:48:57","date_gmt":"2026-06-09T01:48:57","guid":{"rendered":"https:\/\/www.devopsschool.com\/tutorials\/?p=1023"},"modified":"2026-06-09T01:48:58","modified_gmt":"2026-06-09T01:48:58","slug":"datadog-synthetic-tests-vs-synthetic-test-suites-complete-tutorial-guide","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/tutorials\/datadog-synthetic-tests-vs-synthetic-test-suites-complete-tutorial-guide\/","title":{"rendered":"Datadog Synthetic Tests vs Synthetic Test Suites: Complete Tutorial Guide"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">1. Simple Meaning<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In Datadog, <strong>Synthetic Tests<\/strong> are the actual checks that run against your application.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A <strong>Synthetic Test Suite<\/strong> is a logical group of multiple Synthetic Tests.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Think of it like this:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Concept<\/th><th>Simple Meaning<\/th><\/tr><\/thead><tbody><tr><td>Synthetic Test<\/td><td>One actual test\/check<\/td><\/tr><tr><td>Synthetic Test Suite<\/td><td>A folder\/group containing many tests<\/td><\/tr><tr><td>SLO<\/td><td>Reliability target based on uptime\/availability<\/td><\/tr><tr><td>Dashboard SLO Widget<\/td><td>Visual display of an existing SLO<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You may have these individual Synthetic Tests:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Synthetic Test<\/th><th>Purpose<\/th><\/tr><\/thead><tbody><tr><td>Login API uptime test<\/td><td>Checks login endpoint<\/td><\/tr><tr><td>Homepage browser test<\/td><td>Checks website loads<\/td><\/tr><tr><td>Checkout browser test<\/td><td>Checks checkout flow<\/td><\/tr><tr><td>Payment API test<\/td><td>Checks payment endpoint<\/td><\/tr><tr><td>gRPC health check<\/td><td>Checks gRPC service health<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Then you can create a Test Suite called:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Production Critical User Journey<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And add all those tests inside it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The suite does not replace the tests. It only groups them and gives you a combined operational view.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">2. What is a Datadog Synthetic Test?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">A <strong>Synthetic Test<\/strong> is an automated test run by Datadog to check whether your application, endpoint, website, API, or user journey is working.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It can run from:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Location Type<\/th><th>Meaning<\/th><\/tr><\/thead><tbody><tr><td>Datadog managed location<\/td><td>Public Datadog location around the world<\/td><\/tr><tr><td>Private location<\/td><td>Your internal network, VPC, Kubernetes, or private environment<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Synthetic Tests are useful because they test the system from the outside, like a real user or client.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Every 5 minutes:\nDatadog calls https:\/\/api.example.com\/health\nExpected status: 200\nExpected response time: less than 1 second\nIf it fails for 2 runs, alert the team.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">That is a Synthetic Test.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">3. Types of Synthetic Tests<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Datadog supports multiple kinds of Synthetic Tests.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3.1 API Tests<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">API tests check backend endpoints and network services.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Common API test types:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>API Test Type<\/th><th>Purpose<\/th><\/tr><\/thead><tbody><tr><td>HTTP<\/td><td>Check REST\/API endpoint<\/td><\/tr><tr><td>SSL<\/td><td>Check certificate validity<\/td><\/tr><tr><td>DNS<\/td><td>Check DNS resolution<\/td><\/tr><tr><td>TCP<\/td><td>Check TCP port connectivity<\/td><\/tr><tr><td>UDP<\/td><td>Check UDP service<\/td><\/tr><tr><td>ICMP<\/td><td>Ping-style network check<\/td><\/tr><tr><td>WebSocket<\/td><td>Check WebSocket service<\/td><\/tr><tr><td>gRPC<\/td><td>Check gRPC endpoint<\/td><\/tr><tr><td>Multistep API<\/td><td>Chain multiple API calls together<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Example use cases:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Use Case<\/th><th>Test Type<\/th><\/tr><\/thead><tbody><tr><td>Check <code>\/health<\/code> endpoint<\/td><td>HTTP API test<\/td><\/tr><tr><td>Check certificate expiry<\/td><td>SSL test<\/td><\/tr><tr><td>Check DNS record<\/td><td>DNS test<\/td><\/tr><tr><td>Check gRPC health endpoint<\/td><td>gRPC test<\/td><\/tr><tr><td>Login \u2192 get token \u2192 call protected API<\/td><td>Multistep API test<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">3.2 Browser Tests<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Browser tests simulate real user actions in a browser.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Open homepage\nClick Login\nEnter username and password\nClick Submit\nVerify dashboard is visible\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Browser tests are useful for validating frontend flows.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Common use cases:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Use Case<\/th><th>Browser Test?<\/th><\/tr><\/thead><tbody><tr><td>Login flow<\/td><td>Yes<\/td><\/tr><tr><td>Checkout flow<\/td><td>Yes<\/td><\/tr><tr><td>Search flow<\/td><td>Yes<\/td><\/tr><tr><td>Form submission<\/td><td>Yes<\/td><\/tr><tr><td>Page rendering validation<\/td><td>Yes<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">3.3 Mobile Application Tests<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Mobile app tests validate mobile application flows on real devices.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Open mobile app\nTap login\nEnter credentials\nVerify home screen appears\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Use this when your customer journey is inside an Android or iOS app.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">4. What is a Synthetic Test Suite?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">A <strong>Synthetic Test Suite<\/strong> is a collection of existing Synthetic Tests.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It helps you organize tests by:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Grouping Style<\/th><th>Example<\/th><\/tr><\/thead><tbody><tr><td>User journey<\/td><td>Login suite, checkout suite, booking suite<\/td><\/tr><tr><td>Environment<\/td><td>Production suite, staging suite<\/td><\/tr><tr><td>Service<\/td><td>Payment service suite, auth service suite<\/td><\/tr><tr><td>Team<\/td><td>Platform team suite, frontend team suite<\/td><\/tr><tr><td>Criticality<\/td><td>Tier-1 critical tests, non-critical tests<\/td><\/tr><tr><td>Location<\/td><td>Japan user journey, US user journey<\/td><\/tr><tr><td>Application<\/td><td>Web app suite, mobile app suite<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Suite Name: Production Checkout Journey\n\nTests inside:\n1. Homepage browser test\n2. Login browser test\n3. Product search browser test\n4. Add to cart browser test\n5. Payment API test\n6. Order confirmation API test\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The Test Suite helps you see whether the overall checkout journey is healthy.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">5. Main Difference Between Synthetic Test and Synthetic Test Suite<\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Area<\/th><th>Synthetic Test<\/th><th>Synthetic Test Suite<\/th><\/tr><\/thead><tbody><tr><td>Main purpose<\/td><td>Runs an actual check<\/td><td>Groups multiple tests<\/td><\/tr><tr><td>Does it execute a request\/browser\/mobile flow?<\/td><td>Yes<\/td><td>No, it triggers or organizes existing tests<\/td><\/tr><tr><td>Unit of monitoring<\/td><td>One endpoint, one browser flow, one mobile flow, one API sequence<\/td><td>A collection of tests<\/td><\/tr><tr><td>Alerting<\/td><td>Alert on individual test failure<\/td><td>Alert on suite-level condition<\/td><\/tr><tr><td>Dashboard use<\/td><td>Can be shown directly or used for SLO creation<\/td><td>Used for grouped visibility and suite health<\/td><\/tr><tr><td>SLO creation<\/td><td>Usually manual Monitor-based SLO<\/td><td>Current docs do not clearly show automatic SLO creation<\/td><\/tr><tr><td>Ownership<\/td><td>Usually owned by service\/app team<\/td><td>Usually owned by team, product, journey, or environment<\/td><\/tr><tr><td>Best for<\/td><td>Precise technical monitoring<\/td><td>Business journey or operational grouping<\/td><\/tr><tr><td>Example<\/td><td><code>GET \/health should return 200<\/code><\/td><td><code>Production Checkout Critical Tests<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">6. Features Available in Synthetic Tests<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">These are mainly features of individual Synthetic Tests.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Feature<\/th><th>Available in Synthetic Test?<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>API endpoint check<\/td><td>Yes<\/td><td>HTTP, DNS, SSL, TCP, UDP, ICMP, WebSocket, gRPC<\/td><\/tr><tr><td>Browser journey recording<\/td><td>Yes<\/td><td>Simulates real user flow<\/td><\/tr><tr><td>Mobile app journey testing<\/td><td>Yes<\/td><td>Tests Android\/iOS app flows<\/td><\/tr><tr><td>Assertions<\/td><td>Yes<\/td><td>Validate status code, text, response time, UI element, etc.<\/td><\/tr><tr><td>Request headers\/body<\/td><td>Yes<\/td><td>Useful for API tests<\/td><\/tr><tr><td>Authentication handling<\/td><td>Yes<\/td><td>API tokens, cookies, login steps, variables<\/td><\/tr><tr><td>Multistep API chaining<\/td><td>Yes<\/td><td>Pass data from one request to another<\/td><\/tr><tr><td>Test frequency<\/td><td>Yes<\/td><td>Example: every 1 min, 5 min, 15 min<\/td><\/tr><tr><td>Managed locations<\/td><td>Yes<\/td><td>Run from Datadog locations<\/td><\/tr><tr><td>Private locations<\/td><td>Yes<\/td><td>Run from inside private network<\/td><\/tr><tr><td>Alert conditions<\/td><td>Yes<\/td><td>Configure when test should alert<\/td><\/tr><tr><td>Retry behavior<\/td><td>Yes<\/td><td>Reduce false positives<\/td><\/tr><tr><td>Per-test uptime<\/td><td>Yes<\/td><td>Available from test results<\/td><\/tr><tr><td>Monitor-based SLO source<\/td><td>Yes<\/td><td>Common SLO source for uptime<\/td><\/tr><tr><td>CI\/CD execution<\/td><td>Yes<\/td><td>Can run tests in pipeline<\/td><\/tr><tr><td>Terraform\/API management<\/td><td>Yes<\/td><td>Can manage tests as code<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">7. Features Available in Synthetic Test Suites<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">These are mainly features of Test Suites.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Feature<\/th><th>Available in Test Suite?<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Group multiple tests<\/td><td>Yes<\/td><td>Main purpose of Test Suite<\/td><\/tr><tr><td>Add existing tests<\/td><td>Yes<\/td><td>You add already-created Synthetic Tests<\/td><\/tr><tr><td>Group by journey\/environment\/team<\/td><td>Yes<\/td><td>Very useful for organization<\/td><\/tr><tr><td>Suite-level view<\/td><td>Yes<\/td><td>See related tests in one place<\/td><\/tr><tr><td>Suite-level test runs tab<\/td><td>Yes<\/td><td>Useful for grouped execution history<\/td><\/tr><tr><td>Global uptime metrics<\/td><td>Yes<\/td><td>Suite view can show aggregated uptime-style metrics<\/td><\/tr><tr><td>Suite-level alerting<\/td><td>Yes, depending on site\/support<\/td><td>Suite alerts are separate from individual alerts<\/td><\/tr><tr><td>Mark tests critical\/ignored<\/td><td>Yes<\/td><td>Used for suite-level alert decisions<\/td><\/tr><tr><td>Alert when percentage of critical tests fail<\/td><td>Yes<\/td><td>Useful for reducing noise<\/td><\/tr><tr><td>Run multiple tests manually<\/td><td>Yes<\/td><td>Current docs mention max 50 tests can be run at a time<\/td><\/tr><tr><td>Maximum tests per suite<\/td><td>Yes<\/td><td>Current docs mention up to 300 tests per suite<\/td><\/tr><tr><td>Replace individual tests<\/td><td>No<\/td><td>Suite only groups tests; it does not become the real test<\/td><\/tr><tr><td>Per-endpoint assertion<\/td><td>No<\/td><td>Assertions live inside individual tests<\/td><\/tr><tr><td>Per-step browser recording<\/td><td>No<\/td><td>Browser steps live inside browser tests<\/td><\/tr><tr><td>Per-test request configuration<\/td><td>No<\/td><td>Request config lives inside the individual test<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">8. Feature Comparison: What One Has and the Other Does Not<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">8.1 Features Synthetic Tests Have, But Test Suites Do Not<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Feature<\/th><th>Synthetic Test<\/th><th>Test Suite<\/th><\/tr><\/thead><tbody><tr><td>Actual HTTP\/API request execution<\/td><td>Yes<\/td><td>No<\/td><\/tr><tr><td>Actual browser recording steps<\/td><td>Yes<\/td><td>No<\/td><\/tr><tr><td>Actual mobile app test steps<\/td><td>Yes<\/td><td>No<\/td><\/tr><tr><td>Assertions<\/td><td>Yes<\/td><td>No<\/td><\/tr><tr><td>Request headers\/body<\/td><td>Yes<\/td><td>No<\/td><\/tr><tr><td>gRPC proto\/method behavior config<\/td><td>Yes<\/td><td>No<\/td><\/tr><tr><td>DNS\/SSL\/TCP\/UDP\/ICMP configuration<\/td><td>Yes<\/td><td>No<\/td><\/tr><tr><td>Authentication details<\/td><td>Yes<\/td><td>No<\/td><\/tr><tr><td>Response validation<\/td><td>Yes<\/td><td>No<\/td><\/tr><tr><td>Direct monitor for one endpoint\/flow<\/td><td>Yes<\/td><td>No<\/td><\/tr><tr><td>Direct source for Monitor-based SLO<\/td><td>Yes<\/td><td>Not usually the direct source<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">8.2 Features Test Suites Have, But Synthetic Tests Do Not<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Feature<\/th><th>Synthetic Test<\/th><th>Test Suite<\/th><\/tr><\/thead><tbody><tr><td>Group many tests together<\/td><td>No<\/td><td>Yes<\/td><\/tr><tr><td>View journey-level health<\/td><td>Limited<\/td><td>Yes<\/td><\/tr><tr><td>Suite-level alerting<\/td><td>No<\/td><td>Yes<\/td><\/tr><tr><td>Mark tests as Critical or Ignored for suite alert<\/td><td>No<\/td><td>Yes<\/td><\/tr><tr><td>Alert based on percentage of critical tests failing<\/td><td>No<\/td><td>Yes<\/td><\/tr><tr><td>Run selected tests together<\/td><td>No<\/td><td>Yes<\/td><\/tr><tr><td>Manage tests by business journey<\/td><td>Limited<\/td><td>Yes<\/td><\/tr><tr><td>See all related tests in one place<\/td><td>No<\/td><td>Yes<\/td><\/tr><tr><td>Troubleshoot grouped failures<\/td><td>Limited<\/td><td>Yes<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">9. SLO Behavior: Very Important<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">This is where confusion usually happens.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A <strong>Synthetic Test<\/strong> and an <strong>SLO<\/strong> are not the same thing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A Synthetic Test checks whether something is working.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">An SLO defines a reliability target, such as:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>The login API should be available 99.9% of the time over 30 days.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">9.1 For Individual Synthetic Test SLO<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The usual flow is:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Synthetic Test\n   \u2193\nDatadog Monitor\n   \u2193\nMonitor-based SLO\n   \u2193\nDashboard SLO Widget\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Item<\/th><th>Example<\/th><\/tr><\/thead><tbody><tr><td>Synthetic Test<\/td><td><code>prod-login-api-health<\/code><\/td><\/tr><tr><td>Monitor<\/td><td>Auto\/linked Synthetic monitor<\/td><\/tr><tr><td>SLO<\/td><td><code>Login API availability 99.9%<\/code><\/td><\/tr><tr><td>Dashboard widget<\/td><td>SLO widget showing error budget<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">9.2 For Test Suite SLO<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Be careful here.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A Test Suite gives you grouped visibility and suite-level alerting, but you should not assume that creating a Test Suite will always create a visible SLO automatically.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you want a Dashboard SLO widget, the safest approach is:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Requirement<\/th><th>Recommended Action<\/th><\/tr><\/thead><tbody><tr><td>Show SLO for one endpoint<\/td><td>Create Monitor-based SLO from that Synthetic Test<\/td><\/tr><tr><td>Show SLO for one browser journey<\/td><td>Create Monitor-based SLO from that Browser Test<\/td><\/tr><tr><td>Show SLO for critical business journey<\/td><td>Create SLO from one or more important monitors, or use suite-level alerting separately<\/td><\/tr><tr><td>Show grouped health<\/td><td>Use Test Suite view and dashboard widgets<\/td><\/tr><tr><td>Avoid missing SLO confusion<\/td><td>Create SLOs manually and name\/tag them clearly<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">10. Alerting Difference<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">10.1 Synthetic Test Alerting<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Synthetic Test alerting is precise.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Alert if login API fails from 2 of 3 locations for 5 minutes.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Good for:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Use Case<\/th><th>Why<\/th><\/tr><\/thead><tbody><tr><td>Endpoint down<\/td><td>Direct failure<\/td><\/tr><tr><td>SSL expiry<\/td><td>Direct certificate issue<\/td><\/tr><tr><td>DNS problem<\/td><td>Direct DNS validation<\/td><\/tr><tr><td>One browser flow broken<\/td><td>Direct user journey issue<\/td><\/tr><tr><td>gRPC method broken<\/td><td>Direct RPC validation<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">10.2 Test Suite Alerting<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Test Suite alerting is broader.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Alert if 30% of critical tests in the checkout suite fail.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Good for:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Use Case<\/th><th>Why<\/th><\/tr><\/thead><tbody><tr><td>Avoid alert storm<\/td><td>One suite alert instead of many test alerts<\/td><\/tr><tr><td>Business journey monitoring<\/td><td>Checkout\/login\/payment grouped together<\/td><\/tr><tr><td>Operations dashboard<\/td><td>Easier for NOC\/SRE\/team dashboard<\/td><\/tr><tr><td>Prioritization<\/td><td>Critical tests can trigger alert; ignored tests do not<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">11. Recommended Design Pattern<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">For a production application, use both.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Layer 1: Individual Synthetic Tests<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Create individual tests for each important endpoint or journey.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Test Name<\/th><th>Type<\/th><th>Purpose<\/th><\/tr><\/thead><tbody><tr><td><code>prod-homepage-browser<\/code><\/td><td>Browser<\/td><td>Homepage availability<\/td><\/tr><tr><td><code>prod-login-api<\/code><\/td><td>HTTP API<\/td><td>Login endpoint<\/td><\/tr><tr><td><code>prod-checkout-browser<\/code><\/td><td>Browser<\/td><td>Checkout user journey<\/td><\/tr><tr><td><code>prod-payment-api<\/code><\/td><td>HTTP API<\/td><td>Payment endpoint<\/td><\/tr><tr><td><code>prod-grpc-health<\/code><\/td><td>gRPC<\/td><td>gRPC service health<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Layer 2: Test Suites<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Group those tests into suites.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Suite Name<\/th><th>Included Tests<\/th><\/tr><\/thead><tbody><tr><td><code>prod-critical-uptime-suite<\/code><\/td><td>Login, homepage, payment, checkout<\/td><\/tr><tr><td><code>prod-checkout-journey-suite<\/code><\/td><td>Search, cart, payment, order confirmation<\/td><\/tr><tr><td><code>staging-release-validation-suite<\/code><\/td><td>Smoke tests before release<\/td><\/tr><tr><td><code>auth-service-suite<\/code><\/td><td>Login, token, refresh, logout<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Layer 3: SLOs<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Create SLOs for what leadership and SRE care about.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>SLO Name<\/th><th>Source<\/th><\/tr><\/thead><tbody><tr><td><code>Login API Availability 99.9%<\/code><\/td><td>Login API Synthetic monitor<\/td><\/tr><tr><td><code>Checkout Journey Availability 99.5%<\/code><\/td><td>Checkout browser monitor or selected monitors<\/td><\/tr><tr><td><code>Payment API Availability 99.9%<\/code><\/td><td>Payment API Synthetic monitor<\/td><\/tr><tr><td><code>Production Critical Uptime<\/code><\/td><td>Carefully selected critical monitors<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Layer 4: Dashboard<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Create a dashboard with:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Widget<\/th><th>Purpose<\/th><\/tr><\/thead><tbody><tr><td>SLO widget<\/td><td>Reliability target and error budget<\/td><\/tr><tr><td>Synthetic test summary<\/td><td>Current test health<\/td><\/tr><tr><td>Timeseries<\/td><td>Latency trend<\/td><\/tr><tr><td>Top list\/table<\/td><td>Failing locations\/tests<\/td><\/tr><tr><td>Test Suite status<\/td><td>Business journey health<\/td><\/tr><tr><td>Logs\/APM links<\/td><td>Troubleshooting<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">12. Naming Convention Best Practice<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Use consistent names. This makes SLOs, dashboards, and suites much easier to manage.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Recommended naming:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;env&gt;-&lt;service-or-journey&gt;-&lt;test-type&gt;-&lt;purpose&gt;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Examples:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Name<\/th><th>Meaning<\/th><\/tr><\/thead><tbody><tr><td><code>prod-auth-api-login-health<\/code><\/td><td>Production login API health check<\/td><\/tr><tr><td><code>prod-web-browser-checkout-flow<\/code><\/td><td>Production checkout browser flow<\/td><\/tr><tr><td><code>stg-payment-api-smoke<\/code><\/td><td>Staging payment smoke test<\/td><\/tr><tr><td><code>prod-mobile-login-flow<\/code><\/td><td>Production mobile login test<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">For suites:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;env&gt;-&lt;business-area&gt;-suite\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Examples:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Suite Name<\/th><th>Meaning<\/th><\/tr><\/thead><tbody><tr><td><code>prod-critical-uptime-suite<\/code><\/td><td>Critical production checks<\/td><\/tr><tr><td><code>prod-checkout-journey-suite<\/code><\/td><td>Checkout journey tests<\/td><\/tr><tr><td><code>stg-release-validation-suite<\/code><\/td><td>Pre-release staging checks<\/td><\/tr><tr><td><code>prod-auth-service-suite<\/code><\/td><td>Auth service tests<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">For SLOs:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;env&gt; &lt;service\/journey&gt; Availability &lt;target&gt;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Examples:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>SLO Name<\/th><th>Meaning<\/th><\/tr><\/thead><tbody><tr><td><code>prod login API availability 99.9%<\/code><\/td><td>SLO for login API<\/td><\/tr><tr><td><code>prod checkout journey availability 99.5%<\/code><\/td><td>SLO for checkout flow<\/td><\/tr><tr><td><code>prod payment API availability 99.9%<\/code><\/td><td>SLO for payment endpoint<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">13. Tagging Best Practice<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Tags are very important in Datadog.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Recommended tags:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Tag<\/th><th>Example<\/th><\/tr><\/thead><tbody><tr><td><code>env<\/code><\/td><td><code>env:prod<\/code><\/td><\/tr><tr><td><code>service<\/code><\/td><td><code>service:auth<\/code><\/td><\/tr><tr><td><code>team<\/code><\/td><td><code>team:platform<\/code><\/td><\/tr><tr><td><code>journey<\/code><\/td><td><code>journey:checkout<\/code><\/td><\/tr><tr><td><code>criticality<\/code><\/td><td><code>criticality:tier1<\/code><\/td><\/tr><tr><td><code>region<\/code><\/td><td><code>region:ap-northeast-1<\/code><\/td><\/tr><tr><td><code>owner<\/code><\/td><td><code>owner:sre<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>env:prod\nservice:payment\nteam:platform\njourney:checkout\ncriticality:tier1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This helps with filtering:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Area<\/th><th>Benefit<\/th><\/tr><\/thead><tbody><tr><td>Synthetic test list<\/td><td>Quickly find tests<\/td><\/tr><tr><td>Test Suites<\/td><td>Add tests by tag<\/td><\/tr><tr><td>Dashboards<\/td><td>Filter by env\/team\/service<\/td><\/tr><tr><td>SLOs<\/td><td>Organize ownership<\/td><\/tr><tr><td>Cost attribution<\/td><td>Understand Synthetic usage<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">14. Practical Tutorial: How to Build This in Datadog<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Step 1: Create Individual Synthetic Tests<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Go to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Digital Experience \u2192 Synthetic Monitoring \u2192 New Test\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Choose test type:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Requirement<\/th><th>Choose<\/th><\/tr><\/thead><tbody><tr><td>Check REST API<\/td><td>API Test \u2192 HTTP<\/td><\/tr><tr><td>Check gRPC service<\/td><td>API Test \u2192 gRPC<\/td><\/tr><tr><td>Check website flow<\/td><td>Browser Test<\/td><\/tr><tr><td>Check mobile app flow<\/td><td>Mobile Application Test<\/td><\/tr><tr><td>Check SSL expiry<\/td><td>API Test \u2192 SSL<\/td><\/tr><tr><td>Check DNS<\/td><td>API Test \u2192 DNS<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Configure:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Name\nURL\/endpoint\nLocations\nFrequency\nAssertions\nRetries\nAlerting condition\nTags\nNotification message\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Save the test.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Step 2: Create a Test Suite<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Go to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Digital Experience \u2192 Test Suites \u2192 New Test Suite\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Configure:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Suite name\nAdd existing Synthetic Tests\nMark tests as Critical or Ignored\nConfigure suite alerting if available\nSave Suite\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Suite Name: prod-checkout-journey-suite\n\nTests:\n- prod-homepage-browser\n- prod-login-api\n- prod-product-search-browser\n- prod-add-to-cart-browser\n- prod-payment-api\n- prod-order-confirmation-api\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Step 3: Create SLOs Manually<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Go to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Service Management \u2192 Service Level Objectives \u2192 New SLO\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Choose:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Monitor-based SLO\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then select the Synthetic monitor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SLO Name: prod login API availability 99.9%\nSource Monitor: prod-auth-api-login-health\nTarget: 99.9%\nWindow: 30 days\nTags:\n  env:prod\n  service:auth\n  team:platform\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Save.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Step 4: Add SLOs to Dashboard<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Go to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dashboard \u2192 Edit \u2192 Add Widget \u2192 SLO Widget\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Select the SLO you created.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Important:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A dashboard SLO widget does not create SLOs. It only displays SLOs that already exist.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So if a new Synthetic Test is missing from the dashboard, check:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Was an SLO created for it?\nWas the SLO added to the dashboard widget?\nAre dashboard filters hiding it?\nAre tags correct?\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">15. When to Use Synthetic Test vs Test Suite<\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Scenario<\/th><th>Use Synthetic Test<\/th><th>Use Test Suite<\/th><\/tr><\/thead><tbody><tr><td>Monitor one API endpoint<\/td><td>Yes<\/td><td>Optional<\/td><\/tr><tr><td>Monitor one SSL certificate<\/td><td>Yes<\/td><td>Optional<\/td><\/tr><tr><td>Monitor one gRPC service<\/td><td>Yes<\/td><td>Optional<\/td><\/tr><tr><td>Monitor login browser journey<\/td><td>Yes<\/td><td>Optional<\/td><\/tr><tr><td>Group all login-related checks<\/td><td>No<\/td><td>Yes<\/td><\/tr><tr><td>Group all checkout tests<\/td><td>No<\/td><td>Yes<\/td><\/tr><tr><td>Create business journey view<\/td><td>No<\/td><td>Yes<\/td><\/tr><tr><td>Create per-endpoint SLO<\/td><td>Yes<\/td><td>No<\/td><\/tr><tr><td>Reduce alert noise from many related tests<\/td><td>Maybe<\/td><td>Yes<\/td><\/tr><tr><td>Run smoke tests together<\/td><td>Maybe<\/td><td>Yes<\/td><\/tr><tr><td>Build executive dashboard<\/td><td>Yes, via SLOs<\/td><td>Yes, for grouped context<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">16. Common Confusions<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Confusion 1: \u201cI created a Synthetic Test, but no SLO appeared.\u201d<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">That is expected.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Create a Monitor-based SLO manually.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Confusion 2: \u201cI created a Test Suite, but no new SLO appeared.\u201d<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Do not assume Test Suite creation automatically creates a visible SLO in your SLO list.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Check:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Service Level Objectives page\nDashboard widget filters\nSuite page\nPermissions\nDatadog site support\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If you need an SLO, create it manually.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Confusion 3: \u201cI added tests to a suite, but they are missing old results.\u201d<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Suite results normally apply from the time the test was added to the suite. For older history, check the individual test page.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Confusion 4: \u201cShould I mute individual test alerts after adding suite alerting?\u201d<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Maybe yes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you enable suite-level alerting and individual test alerting, you may get duplicate notifications.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Common approach:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Test Type<\/th><th>Alerting Strategy<\/th><\/tr><\/thead><tbody><tr><td>Tier-1 critical individual test<\/td><td>Keep individual alert<\/td><\/tr><tr><td>Non-critical test in suite<\/td><td>Mute or reduce individual alert<\/td><\/tr><tr><td>Business journey suite<\/td><td>Enable suite alert<\/td><\/tr><tr><td>SLO-backed test<\/td><td>Keep alert carefully aligned with SLO<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">17. Recommended Alerting Strategy<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Use this model:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Level<\/th><th>Purpose<\/th><th>Example<\/th><\/tr><\/thead><tbody><tr><td>Individual Synthetic Alert<\/td><td>Precise technical failure<\/td><td>Login API down<\/td><\/tr><tr><td>Suite Alert<\/td><td>Business journey degraded<\/td><td>Checkout suite failing<\/td><\/tr><tr><td>SLO Burn\/Error Budget Alert<\/td><td>Reliability risk<\/td><td>Error budget burning too fast<\/td><\/tr><tr><td>Dashboard<\/td><td>Visibility and trend<\/td><td>SLO, uptime, latency, failures<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Best practice:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Do not alert everyone for everything.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Recommended pattern:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Test Criticality<\/th><th>Alert Behavior<\/th><\/tr><\/thead><tbody><tr><td>Tier-1 critical<\/td><td>Pager\/urgent alert<\/td><\/tr><tr><td>Tier-2 important<\/td><td>Team channel alert<\/td><\/tr><tr><td>Tier-3 informational<\/td><td>Dashboard only<\/td><\/tr><tr><td>Noisy\/non-critical<\/td><td>Suite-only or muted<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">18. Example Final Design<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Synthetic Tests<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Test<\/th><th>Type<\/th><th>Frequency<\/th><th>Alert<\/th><\/tr><\/thead><tbody><tr><td><code>prod-auth-api-login-health<\/code><\/td><td>HTTP API<\/td><td>5 min<\/td><td>Yes<\/td><\/tr><tr><td><code>prod-web-browser-login-flow<\/code><\/td><td>Browser<\/td><td>10 min<\/td><td>Yes<\/td><\/tr><tr><td><code>prod-payment-api-health<\/code><\/td><td>HTTP API<\/td><td>5 min<\/td><td>Yes<\/td><\/tr><tr><td><code>prod-checkout-browser-flow<\/code><\/td><td>Browser<\/td><td>15 min<\/td><td>Yes<\/td><\/tr><tr><td><code>prod-grpc-order-health<\/code><\/td><td>gRPC<\/td><td>5 min<\/td><td>Yes<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Test Suites<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Suite<\/th><th>Tests Included<\/th><th>Purpose<\/th><\/tr><\/thead><tbody><tr><td><code>prod-critical-uptime-suite<\/code><\/td><td>Auth, payment, checkout, order<\/td><td>Production critical health<\/td><\/tr><tr><td><code>prod-checkout-journey-suite<\/code><\/td><td>Homepage, search, cart, payment, confirmation<\/td><td>Business flow<\/td><\/tr><tr><td><code>stg-release-validation-suite<\/code><\/td><td>Smoke tests<\/td><td>Pre-release validation<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">SLOs<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>SLO<\/th><th>Source<\/th><th>Target<\/th><\/tr><\/thead><tbody><tr><td><code>prod auth API availability<\/code><\/td><td>Auth API monitor<\/td><td>99.9%<\/td><\/tr><tr><td><code>prod payment API availability<\/code><\/td><td>Payment API monitor<\/td><td>99.9%<\/td><\/tr><tr><td><code>prod checkout journey availability<\/code><\/td><td>Checkout browser monitor<\/td><td>99.5%<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Dashboard<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Dashboard Section<\/th><th>Widgets<\/th><\/tr><\/thead><tbody><tr><td>Executive summary<\/td><td>SLO widgets<\/td><\/tr><tr><td>Synthetic health<\/td><td>Test status widgets<\/td><\/tr><tr><td>Business journey<\/td><td>Test Suite status<\/td><\/tr><tr><td>Troubleshooting<\/td><td>Failed locations, latency, APM\/log links<\/td><\/tr><tr><td>Reliability<\/td><td>Error budget and burn rate<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">19. Final Recommendation<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Use <strong>Synthetic Tests<\/strong> for actual monitoring.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Use <strong>Test Suites<\/strong> for organization, grouped execution, suite-level visibility, and journey-level alerting.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Use <strong>SLOs<\/strong> separately for reliability targets and dashboards.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The clean design is:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Synthetic Tests = actual checks\nTest Suites = grouped operational view\nSLOs = reliability target\nDashboard = visibility layer\nAlerts = action layer\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For your case, where you created uptime tests and display them on a dashboard using SLO widgets:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>For each important Synthetic Test:\n1. Confirm the Synthetic Test exists.\n2. Confirm its monitor exists.\n3. Manually create a Monitor-based SLO.\n4. Add that SLO to the dashboard SLO widget.\n5. Optionally add the test into a Test Suite for grouped visibility.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Do not depend on Test Suite creation to automatically create every SLO you need.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That manual SLO step is the safest and cleanest production approach.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>1. Simple Meaning In Datadog, Synthetic Tests are the actual checks that run against your application. A Synthetic Test Suite is a logical group of multiple Synthetic&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[79],"tags":[],"class_list":["post-1023","post","type-post","status-publish","format-standard","hentry","category-datadog"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/1023","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/comments?post=1023"}],"version-history":[{"count":1,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/1023\/revisions"}],"predecessor-version":[{"id":1024,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/1023\/revisions\/1024"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/media?parent=1023"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/categories?post=1023"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/tags?post=1023"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}