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.totalindices.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}}
- Timestamp:
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.