Blog

Cloud Metrics Aggregator Automation Recipe

05 April 2025

A no-code Make.com scenario to unify MySQL, Elasticsearch, and REST API metrics into a live Google Sheets dashboard — built for indie hackers and solo operators who need enterprise-grade visibility without coding.

Who This Is For

You're a solo founder, indie hacker, or micro-SaaS operator running multiple tools across cloud services — MySQL databases, Elasticsearch clusters, and REST APIs. You need a unified view of performance metrics but don't have time to build dashboards from scratch.

This automation recipe pulls key metrics from all three sources every hour and logs them into a Google Sheet — giving you enterprise-level visibility without writing a single line of code.

It’s ideal for monitoring uptime, API response times, database load, and search cluster health — all in one place.

Outcome

By the end of this guide, you’ll have a fully automated monitoring dashboard that updates hourly with:

  • Database query latency from MySQL
  • Cluster health and index stats from Elasticsearch
  • API uptime and response time from any REST endpoint

All logged neatly in Google Sheets — ready to visualize or export.

This workflow pairs well with our Data Integration ROI Calculator to estimate time saved and with the Automation Workflow Tutorial for deeper context.

Prerequisites

Before you start:

  • A Make.com account (free tier works)
  • Google account with Sheets access
  • Access to a MySQL database with read permissions
  • Access to an Elasticsearch cluster
  • A REST API endpoint you want to monitor

Step-by-Step Make.com Scenario

1. Trigger: Hourly Timer

Start with a Webhook > Schedule > Run Workflow trigger. Set it to run every hour.

2. Step 1: Query MySQL for Latency Metrics

Use the MySQL > Select Rows action:

  • Connect your MySQL instance
  • Run a query like SELECT AVG(query_time) AS avg_query_time FROM performance_log WHERE timestamp > NOW() - INTERVAL 1 HOUR
  • Store the result as mysql_avg_query_time

3. Step 2: Fetch Elasticsearch Cluster Stats

Use the HTTP > Make a Request action:

  • Method: GET
  • URL: https://your-cluster-url/_cluster/stats
  • Authentication: Bearer Token or Basic Auth
  • Parse the JSON response and extract:
    • nodes.count.total
    • indices.store.size_in_bytes
    • Store these as es_node_count, es_storage_bytes

4. Step 3: Monitor REST API Uptime

Use the HTTP > Make a Request action again:

  • Method: GET
  • URL: Your API endpoint (e.g., https://api.example.com/health)
  • Store response time and status code
  • Save as api_status_code, api_response_time

5. Step 4: Log All Metrics to Google Sheets

Use the Google Sheets > Create a Spreadsheet Row action:

  • Spreadsheet: Select or create a new one
  • Sheet: Metrics Log
  • Map the following fields:
    • Timestamp: {{step1.timestamp}}
    • MySQL Avg Query Time: {{step2.mysql_avg_query_time}}
    • ES Node Count: {{step3.es_node_count}}
    • ES Storage (Bytes): {{step3.es_storage_bytes}}
    • API Status Code: {{step4.api_status_code}}
    • API Response Time (ms): {{step4.api_response_time}}

JSON Export (Make.com Scenario)

{
  "name": "Cloud Metrics Aggregator",
  "modules": [
    {
      "id": 1,
      "type": "webhooks",
      "function": "timer",
      "configuration": {
        "interval": "hourly"
      }
    },
    {
      "id": 2,
      "type": "mysql",
      "function": "select",
      "configuration": {
        "query": "SELECT AVG(query_time) AS avg_query_time FROM performance_log WHERE timestamp > NOW() - INTERVAL 1 HOUR"
      }
    },
    {
      "id": 3,
      "type": "http",
      "function": "request",
      "configuration": {
        "method": "GET",
        "url": "https://your-cluster-url/_cluster/stats",
        "auth": {
          "type": "bearer",
          "token": "{{your_token}}"
        }
      }
    },
    {
      "id": 4,
      "type": "http",
      "function": "request",
      "configuration": {
        "method": "GET",
        "url": "https://api.example.com/health"
      }
    },
    {
      "id": 5,
      "type": "sheets",
      "function": "append",
      "configuration": {
        "spreadsheetId": "{{your_sheet_id}}",
        "sheetName": "Metrics Log",
        "values": [
          "{{step1.timestamp}}",
          "{{step2.mysql_avg_query_time}}",
          "{{step3.es_node_count}}",
          "{{step3.es_storage_bytes}}",
          "{{step4.api_status_code}}",
          "{{step4.api_response_time}}"
        ]
      }
    }
  ]
}

Troubleshooting FAQ

Q: My MySQL connection fails — what should I check?

A: Ensure your MySQL instance allows external connections and your IP is whitelisted. Double-check your credentials and database permissions.

Q: Elasticsearch returns a 401 Unauthorized error?

A: Verify your Bearer Token or Basic Auth credentials. Some clusters require role-based access control (RBAC) — ensure your user has monitor permissions.

Q: My API endpoint isn’t returning a response time?

A: Add a custom header like X-Response-Time or log it manually in the response. Alternatively, use a third-party uptime checker and pass the result via webhook.

Q: Google Sheets is not updating?

A: Confirm the spreadsheet ID is correct and your Make.com account has edit access. Also, ensure the sheet tab is named exactly Metrics Log.

Monetisation CTA

Want to turn this into a SaaS monitoring tool or sell it as a template?

Check out our AI Automation ROI Calculator to estimate how much time and money this automation saves — and consider bundling it with other recipes in a Prompt Pack for Indie Makers.

Or, spin it out as a standalone tool using Softr or Glide for a no-code SaaS MVP.


Next step: Download this scenario as a .json import and test it in your Make.com dashboard.

← Back to blog