From 0b269a7618c9ce28ded6c08107ed1b601e0fb29d Mon Sep 17 00:00:00 2001 From: Noran-Salm Date: Mon, 27 Jul 2026 04:45:59 +0300 Subject: [PATCH] Complete interview solution --- q2-postmortem/postmortem-report.md | 213 ++++++++++++++++++ q3-cicd/README.md | 235 ++++++++++++++++++++ q3-cicd/workflow.yml | 136 ++++++++++++ q4-scalability/architecture.png | Bin 0 -> 149629 bytes q4-scalability/calculations.md | 167 ++++++++++++++ q5-mithal-monitor/dashboard.html | 336 +++++++++++++++++++++++++++++ q5-mithal-monitor/monitor.py | 174 +++++++++++++++ q5-mithal-monitor/requirements.txt | 1 + 8 files changed, 1262 insertions(+) create mode 100644 q3-cicd/README.md create mode 100644 q5-mithal-monitor/requirements.txt diff --git a/q2-postmortem/postmortem-report.md b/q2-postmortem/postmortem-report.md index e69de29..2cc27d3 100644 --- a/q2-postmortem/postmortem-report.md +++ b/q2-postmortem/postmortem-report.md @@ -0,0 +1,213 @@ +# Incident Postmortem Report + +## Application Information + +| Item | Value | +|------|-------| +| **Application** | API Service on Ghaymah Platform | +| **Incident Date** | 2026-07-27 | +| **Incident Duration** | 45 Minutes (10:15 – 11:00) | +| **Severity** | High | +| **Impact** | Complete service outage. Users were unable to access the API during the incident. | + +--- + +# 1. Executive Summary + +On **2026-07-27**, the API service experienced a **45-minute outage** due to repeated **OOMKilled** events. + +The application gradually consumed more memory because of a memory leak while processing large requests. Once the container exceeded its allocated memory limit, the platform terminated and restarted it automatically. This restart cycle repeated continuously, resulting in complete service unavailability. + +The immediate mitigation was increasing the container memory allocation and restarting the service. Long-term corrective actions include fixing the memory leak, improving monitoring, and implementing an auto-scaling policy based on resource utilization. + +--- + +# 2. Incident Timeline + +| Time | Event | +|------|-------| +| **10:15** | Memory usage started increasing on one of the application containers. | +| **10:22** | First container was terminated with **OOMKilled** and automatically restarted by the platform. | +| **10:25 – 10:45** | Multiple containers repeatedly entered restart loops, reducing the application's availability. | +| **10:45** | Monitoring system generated alerts indicating complete service outage. | +| **10:50** | SRE team began investigating the incident and identified abnormal memory usage. | +| **11:00** | Container memory limit increased from **512 MiB** to **1 GiB** and services were restarted successfully. | +| **11:15** | Additional monitoring and temporary mitigation measures were applied. | + +--- + +# 3. Root Cause Analysis + +## Immediate Cause + +The application exhausted the available memory, causing the platform to terminate the container with an **OOMKilled** event. + +## Root Cause + +A memory leak inside the request processing logic (or an external library) continuously retained memory instead of releasing it after requests were completed. + +## Contributing Factors + +- Sudden increase in traffic (approximately **3× normal load**). +- Insufficient memory allocation. +- No automatic scaling based on memory utilization. +- Lack of early warning alerts before reaching the memory limit. + +--- + +# 4. Recommendations + +## Short-Term Actions + +- Increase container memory limits. +- Monitor memory consumption continuously. +- Restart unhealthy containers automatically. + +## Long-Term Improvements + +- Fix the memory leak in the application. +- Configure appropriate container memory **requests** and **limits**. +- Enable memory-based auto-scaling. +- Configure proactive alerting. +- Perform regular load and stress testing. +- Maintain an incident response runbook for OOMKilled events. + +--- + +# 5. Auto-Scaling Policy + +To prevent similar incidents, the following auto-scaling policy is recommended. + +| Configuration | Value | +|--------------|-------| +| **Metric** | Average Container Memory Usage | +| **Scale-Out Threshold** | Memory usage > **70%** for **2 minutes** | +| **Scale-Out Action** | Add one container instance | +| **Minimum Replicas** | 2 | +| **Maximum Replicas** | 10 | +| **Cooldown Period** | 5 Minutes | +| **Scale-In Threshold** | Memory usage < **40%** for **10 minutes** | +| **Scale-In Action** | Remove one container instance | + +### Example Auto-Scaling Configuration + +```yaml +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: api-hpa +spec: + minReplicas: 2 + maxReplicas: 10 + metrics: + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: 70 +``` + +> **Note:** The YAML above is an example of a memory-based auto-scaling policy and illustrates the desired behavior conceptually. + +--- + +# 6. Early Detection Using Ghaymah Monitoring + +The following monitoring capabilities should be configured to detect similar incidents before they impact users. + +## Resource Monitoring + +Track real-time metrics including: + +- Container Memory Usage +- CPU Utilization +- Container Restart Count +- Container Health Status + +--- + +## Alerting + +Configure alerts such as: + +| Condition | Action | +|-----------|--------| +| Memory usage > 60% for 3 minutes | Send Email / Slack / Webhook notification | +| Multiple container restarts | Trigger High-Priority Alert | +| Service unavailable | Immediate Critical Alert | + +--- + +## Event Monitoring + +Monitor platform events including: + +- OOMKilled +- Container Restart +- CrashLoop +- Failed Deployments + +--- + +## Dashboard + +Create a monitoring dashboard displaying: + +- Current Container Status +- Memory Utilization +- CPU Utilization +- Response Time +- Request Count +- Restart Count +- OOMKilled Events +- Service Availability (Uptime) + +--- + +## Trend Analysis + +Analyze historical metrics to identify: + +- Gradual memory growth +- Traffic spikes +- Abnormal restart frequency +- Resource utilization trends + +This enables proactive detection before a service outage occurs. + +--- + +# 7. Lessons Learned + +The incident highlighted several important operational improvements: + +- Proper memory sizing is essential. +- Continuous monitoring should be proactive rather than reactive. +- Memory-based auto-scaling reduces service interruption. +- Early alerts significantly reduce recovery time. +- Load testing helps identify memory leaks before production deployment. + +--- + +# Action Items + +| Priority | Action | Status | +|----------|--------|--------| +| High | Fix memory leak | Planned | +| High | Configure memory alerts | Planned | +| High | Enable auto-scaling | Planned | +| Medium | Perform load testing | Planned | +| Medium | Update operational runbook | Planned | + +--- + +# Report Information + +| Item | Value | +|------|-------| +| **Prepared By** | SRE Team | +| **Platform** | Ghaymah Systems | +| **Report Date** | 2026-07-27 | +| **Incident Type** | Repeated OOMKilled | +| **Status** | Closed | \ No newline at end of file diff --git a/q3-cicd/README.md b/q3-cicd/README.md new file mode 100644 index 0000000..d4fefb3 --- /dev/null +++ b/q3-cicd/README.md @@ -0,0 +1,235 @@ +# CI/CD Pipeline Documentation + +This document describes the Continuous Integration and Continuous Deployment (CI/CD) pipeline implemented for the Ghaymah SRE exam. + +--- + +# Pipeline Overview + +The pipeline automates the application delivery process by: + +1. Building a Docker image. +2. Pushing the image to the Ghaymah Container Registry. +3. Deploying automatically to the **Staging** environment. +4. Waiting for **manual approval**. +5. Deploying the same image to **Production**. + +``` +Developer Push + │ + ▼ +GitHub Actions + │ + ▼ +Build Docker Image + │ + ▼ +Push to Ghaymah Container Registry + │ + ▼ +Deploy to Staging + │ + ▼ +Manual Approval + │ + ▼ +Deploy to Production +``` + +--- + +# Manual Approval for Production + +Production deployments are protected using **GitHub Environments**. + +## Configuration + +1. Open the repository. + +2. Navigate to: + +``` +Settings +→ Environments +``` + +3. Create an environment named: + +``` +production +``` + +4. Enable: + +- Required reviewers +- (Optional) Wait timer +- (Optional) Deployment branch restrictions + +--- + +## Deployment Flow + +After the application is successfully deployed to **Staging**, the workflow pauses before deploying to **Production**. + +``` +Build + │ +Deploy Staging + │ +Waiting for Approval + │ +Reviewer Approves + │ +Deploy Production +``` + +Only authorized reviewers can approve the deployment. + +--- + +## Benefits + +- Prevents accidental deployments. +- Adds an approval gate before production. +- Provides a complete audit trail. +- Supports controlled production releases. + +--- + +# Staging vs Production + +| Feature | Staging | Production | +|----------|----------|------------| +| Purpose | Integration testing and QA | Live customer environment | +| Users | Developers & QA | End users | +| Data | Test or sanitized data | Real production data | +| Replicas | Usually 1 | Usually 3 or more | +| Resources | Lower CPU/Memory | Higher CPU/Memory | +| Secrets | Test credentials | Production credentials | +| Deployment | Automatic | Manual approval required | +| Monitoring | Basic monitoring | Full monitoring and alerting | +| Rollback | Low impact | Carefully managed | +| Domain | staging.example.com | api.example.com | +| Logging | Verbose | Optimized for production | + +> **Best Practice** +> +> The **same Docker image** (identified by its commit SHA) should be promoted from **Staging** to **Production**. Rebuilding the image for Production should be avoided to guarantee consistency. + +--- + +# Ghaymah CLI Integration + +> **Note** +> +> The official Ghaymah CLI documentation was not provided with the exam. The following commands are **placeholders** and should be replaced with the official syntax when available. + +--- + +## 1. Install CLI + +```bash +curl -sSL https://get.ghaymah.systems/cli/install.sh | sh + +export PATH="$HOME/.ghaymah/bin:$PATH" +``` + +--- + +## 2. Authenticate + +```bash +ghaymah login --token $GHAYMAH_TOKEN +``` + +Authentication credentials should be stored securely using GitHub Secrets. + +--- + +## 3. Deploy Application + +```bash +ghaymah deploy \ + --image registry.ghaymah.systems/ghaymah-api:latest \ + --name api-production \ + --port 5000 \ + --env FLASK_ENV=production \ + --replicas 3 \ + --health-check /health +``` + +--- + +## 4. Verify Deployment + +```bash +ghaymah status --name api-production + +ghaymah logs --name api-production +``` + +--- + +## 5. Scale Application + +```bash +ghaymah scale \ + --name api-production \ + --replicas 5 +``` + +--- + +## 6. Rollback + +```bash +ghaymah deploy \ + --image registry.ghaymah.systems/ghaymah-api: \ + --name api-production \ + --port 5000 +``` + +--- + +# GitHub Secrets + +Sensitive information should **never** be stored in the repository. + +Configure the following repository secrets: + +| Secret | Description | +|---------|-------------| +| `GHAYMAH_USERNAME` | Container Registry username | +| `GHAYMAH_TOKEN` | Access token used for authentication | + +These secrets are referenced in the workflow as: + +```yaml +${{ secrets.GHAYMAH_USERNAME }} + +${{ secrets.GHAYMAH_TOKEN }} +``` + +--- + +# Best Practices + +- Build the Docker image once and promote the same image between environments. +- Tag every image with the Git commit SHA for traceability. +- Keep secrets in **GitHub Secrets**, never in source code. +- Protect Production using **GitHub Environment approvals**. +- Enable Docker Buildx cache to reduce build time. +- Use health checks before considering a deployment successful. +- Maintain separate configurations for Staging and Production. +- Document deployment and rollback procedures. +- Monitor deployments and configure alerting for failures. + +--- + +# References + +- GitHub Actions Documentation +- Docker Buildx Documentation +- GitHub Environments Documentation + +> Ghaymah CLI commands in this document are provided as implementation placeholders because the official CLI documentation was not included with the exam. \ No newline at end of file diff --git a/q3-cicd/workflow.yml b/q3-cicd/workflow.yml index e69de29..06ffc87 100644 --- a/q3-cicd/workflow.yml +++ b/q3-cicd/workflow.yml @@ -0,0 +1,136 @@ +name: Build and Deploy to Ghaymah + +on: + # Run automatically when code is pushed to the main branch + push: + branches: + - main + + # Allow manual workflow execution from GitHub Actions + workflow_dispatch: + +env: + # Replace with the official Ghaymah Container Registry URL + REGISTRY: registry.ghaymah.systems + + # Docker image name + IMAGE_NAME: ghaymah-api + +jobs: + + # ------------------------------------------------------- + # Build the Docker image and push it to the registry + # ------------------------------------------------------- + build-and-push: + runs-on: ubuntu-latest + + permissions: + contents: read + packages: write + + steps: + # Check out the repository source code + - name: Checkout code + uses: actions/checkout@v4 + + # Enable Docker Buildx for advanced builds and caching + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + # Authenticate with the container registry + - name: Log in to Ghaymah Container Registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ secrets.GHAYMAH_USERNAME }} + password: ${{ secrets.GHAYMAH_TOKEN }} + + # Build the Docker image and push it to the registry + - name: Build and push Docker image + uses: docker/build-push-action@v6 + with: + # Path containing the Dockerfile + context: ./q1-deploy-monitor + + # Push the image after a successful build + push: true + + # Publish two image tags: + # - latest + # - commit SHA for traceability + tags: | + ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest + ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }} + + # Enable Docker layer caching + cache-from: type=gha + cache-to: type=gha,mode=max + + # ------------------------------------------------------- + # Deploy the application to the staging environment + # ------------------------------------------------------- + deploy-staging: + needs: build-and-push + runs-on: ubuntu-latest + + # GitHub Environment + environment: staging + + steps: + # Install the Ghaymah CLI + # Replace with the official installation command if different + - name: Install Ghaymah CLI + run: | + curl -sSL https://get.ghaymah.systems/cli/install.sh | sh + echo "$HOME/.ghaymah/bin" >> $GITHUB_PATH + + # Deploy the application to staging + # Replace the commands below with the official CLI syntax if needed + - name: Deploy to Staging + env: + GHAYMAH_TOKEN: ${{ secrets.GHAYMAH_TOKEN }} + + run: | + ghaymah login --token $GHAYMAH_TOKEN + + ghaymah deploy \ + --image ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }} \ + --name api-staging \ + --port 5000 \ + --env FLASK_ENV=staging \ + --replicas 1 + + # ------------------------------------------------------- + # Deploy the application to the production environment + # ------------------------------------------------------- + deploy-production: + needs: deploy-staging + runs-on: ubuntu-latest + + # Configure this environment with required reviewers + # to enable manual approval before deployment + environment: production + + steps: + # Install the Ghaymah CLI + - name: Install Ghaymah CLI + run: | + curl -sSL https://get.ghaymah.systems/cli/install.sh | sh + echo "$HOME/.ghaymah/bin" >> $GITHUB_PATH + + # Deploy the application to production + # This job runs only after manual approval + - name: Deploy to Production + env: + GHAYMAH_TOKEN: ${{ secrets.GHAYMAH_TOKEN }} + + run: | + ghaymah login --token $GHAYMAH_TOKEN + + ghaymah deploy \ + --image ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }} \ + --name api-production \ + --port 5000 \ + --env FLASK_ENV=production \ + --replicas 3 \ + --health-check /health \ No newline at end of file diff --git a/q4-scalability/architecture.png b/q4-scalability/architecture.png index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c2d1e9447b2552dd7e0f1e3c47acb35867dbbe78 100644 GIT binary patch literal 149629 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 z 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⪚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

eBM6ml=TYvb>I-cRv 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 literal 0 HcmV?d00001 diff --git a/q4-scalability/calculations.md b/q4-scalability/calculations.md index e69de29..bd76546 100644 --- a/q4-scalability/calculations.md +++ b/q4-scalability/calculations.md @@ -0,0 +1,167 @@ +# Scalability and Load Balancing Design + +## Scenario + +Design an architecture capable of handling: + +- **15,000 requests per second (req/s)** + +Each application container can process: + +- **500 req/s** + +A **30% capacity buffer** is required to handle traffic spikes and unexpected load. + +--- + +# 1. High-Level Architecture + +The proposed architecture consists of the following components: + +- DNS +- Load Balancer +- Multiple API containers +- Auto Scaling service +- Container Orchestrator +- Database +- Ghaymah Block Storage +- Monitoring and Alerting + +## Architecture Diagram + +The following diagram illustrates the proposed scalable architecture for handling 15,000 requests per second using load balancing, auto scaling, centralized monitoring, and persistent storage. + +![Architecture](architecture.png) + +--- + +## Request Flow + +``` +Users + │ + ▼ +DNS + │ + ▼ +Load Balancer + │ + ▼ +API Containers + │ + ▼ +Database +``` + +Monitoring components (Prometheus, Grafana, and centralized logging) collect metrics and logs from the Load Balancer, API containers, and database. + +--- + +# 2. Container Capacity Calculation + +## Step 1: Calculate Required Containers + +Traffic: + +``` +15,000 req/s +``` + +Container capacity: + +``` +500 req/s +``` + +Required containers: + +``` +15000 / 500 = 30 containers +``` + +--- + +## Step 2: Add 30% Safety Buffer + +``` +30 × 1.30 = 39 containers +``` + +--- + +## Recommended Deployment Size + +Minimum recommended deployment: + +**39 containers** + +This provides additional capacity for traffic spikes and reduces the risk of resource saturation during unexpected load increases. + +--- + +# 3. Cold Start Strategy + +To minimize startup delays during scaling events, the following strategies are recommended. + +## Warm Pool + +Maintain 2–3 idle containers ready to receive traffic immediately. + +## Container Image Optimization + +- Use lightweight base images. +- Remove unnecessary packages and dependencies. +- Keep image size as small as possible. + +## Image Pre-Pulling + +Pre-pull container images on worker nodes to reduce deployment time and avoid downloading images during scale-out events. + +## Health Checks + +New containers must pass readiness and liveness checks before receiving production traffic. + +## Gradual Traffic Shift + +The Load Balancer should gradually route traffic to newly started containers after successful health verification. + +## Predictive Scaling + +Scale proactively based on CPU utilization, memory usage, and request-rate trends instead of waiting until the system reaches full capacity. + +--- + +# 4. Using Ghaymah Block Storage for Stateful Workloads + +Ghaymah Block Storage provides persistent storage volumes that remain available even if containers are restarted, replaced, or rescheduled. + +This makes it suitable for workloads that require durable data storage. + +Examples include: + +- Databases +- Message queues +- File storage +- Application uploads +- Persistent logs + +## Benefits + +- Persistent data survives container restarts. +- Volumes can be attached to replacement containers. +- Improves reliability for stateful applications. +- Simplifies backup and disaster recovery. +- Enhances data durability during scaling events. + +--- + +# Best Practices + +- Deploy multiple replicas behind a Load Balancer. +- Enable Horizontal Auto Scaling based on CPU, memory, and request rate. +- Configure readiness and liveness probes. +- Use lightweight container images to reduce cold-start time. +- Store persistent data using Ghaymah Block Storage. +- Continuously monitor latency, error rate, CPU, and memory utilization. +- Configure alerts for abnormal response times and infrastructure failures. +- Regularly perform load testing to validate scalability assumptions. \ No newline at end of file diff --git a/q5-mithal-monitor/dashboard.html b/q5-mithal-monitor/dashboard.html index e69de29..715cdd6 100644 --- a/q5-mithal-monitor/dashboard.html +++ b/q5-mithal-monitor/dashboard.html @@ -0,0 +1,336 @@ + + + + + + mithal.space Monitoring Dashboard + + + + +

+
+

📊 mithal.space Monitoring Dashboard

+
Real-time performance & availability monitoring
+
+ +
+
+
🟢 Uptime (24h)
+
--
+
+
+
📡 Current Status
+
--
+
+
+
⚡ Last Latency
+
-- ms
+
+
+
🔒 SSL Certificate
+
--
+
-- days remaining
+
+
+
🌐 DNS Resolution
+
-- ms
+
+
+
🔍 Search Response
+
-- ms
+
+
+ +
+ +
+ +
+

📋 Recent Checks (last 10)

+ + + + + + + + + + + + + + +
TimestampStatusLatency (ms)DNS (ms)SSLSearch (ms)
Loading data...
+
+ +
📡 Last updated: Loading...
+
+ + + + \ No newline at end of file diff --git a/q5-mithal-monitor/monitor.py b/q5-mithal-monitor/monitor.py index e69de29..7a16e24 100644 --- a/q5-mithal-monitor/monitor.py +++ b/q5-mithal-monitor/monitor.py @@ -0,0 +1,174 @@ +#!/usr/bin/env python3 +""" +Monitoring Script for mithal.space +Collects: latency, uptime, SSL, DNS, search response +""" + +import requests +import json +import time +import socket +import ssl +import datetime +import os +from urllib.parse import urlparse + +# Configuration +TARGET_URL = "https://mithal.space" +SEARCH_QUERY = "?q=test" # adjust if search endpoint differs +DATA_FILE = "monitoring-data.json" +MAX_ENTRIES = 1440 # 24 hours * 60 minutes +TIMEOUT = 10 + +def check_ssl_certificate(hostname, port=443): + """Check SSL certificate expiry date.""" + try: + context = ssl.create_default_context() + with socket.create_connection((hostname, port), timeout=TIMEOUT) as sock: + with context.wrap_socket(sock, server_hostname=hostname) as ssock: + cert = ssock.getpeercert() + expiry_date = datetime.datetime.strptime(cert['notAfter'], '%b %d %H:%M:%S %Y %Z') + days_remaining = (expiry_date - datetime.datetime.utcnow()).days + return { + "expiry_date": expiry_date.isoformat(), + "days_remaining": days_remaining, + "valid": days_remaining > 0 + } + except Exception as e: + return { + "expiry_date": None, + "days_remaining": None, + "valid": False, + "error": str(e) + } + +def resolve_dns(hostname): + """Measure DNS resolution time.""" + try: + start = time.time() + socket.gethostbyname(hostname) + dns_time = round((time.time() - start) * 1000, 2) + return dns_time + except Exception: + return None + +def check_latency_and_uptime(url): + """Check HTTP response time and status code.""" + try: + start = time.time() + response = requests.get(url, timeout=TIMEOUT) + latency = round((time.time() - start) * 1000, 2) + status_code = response.status_code + is_up = 200 <= status_code < 400 + return { + "latency": latency, + "status_code": status_code, + "is_up": is_up, + "error": None + } + except requests.RequestException as e: + return { + "latency": None, + "status_code": None, + "is_up": False, + "error": str(e) + } + +def check_search_response(url, query="?q=test"): + """Measure search endpoint response time.""" + try: + search_url = f"{url}{query}" + start = time.time() + response = requests.get(search_url, timeout=TIMEOUT) + search_latency = round((time.time() - start) * 1000, 2) + return { + "search_latency": search_latency, + "search_status": response.status_code, + "search_error": None + } + except requests.RequestException as e: + return { + "search_latency": None, + "search_status": None, + "search_error": str(e) + } + +def collect_metrics(): + """Collect all metrics for mithal.space.""" + parsed = urlparse(TARGET_URL) + hostname = parsed.hostname or "mithal.space" + + dns_time = resolve_dns(hostname) + ssl_info = check_ssl_certificate(hostname) + health = check_latency_and_uptime(TARGET_URL) + search = check_search_response(TARGET_URL, SEARCH_QUERY) + + metrics = { + "timestamp": datetime.datetime.utcnow().isoformat() + "Z", + "url": TARGET_URL, + "dns_ms": dns_time, + "ssl_valid": ssl_info.get("valid", False), + "ssl_days_remaining": ssl_info.get("days_remaining"), + "ssl_expiry_date": ssl_info.get("expiry_date"), + "latency_ms": health.get("latency"), + "status_code": health.get("status_code"), + "is_up": health.get("is_up", False), + "error": health.get("error"), + "search_latency_ms": search.get("search_latency"), + "search_status_code": search.get("search_status"), + "search_error": search.get("search_error") + } + return metrics + +def save_metrics(metrics, filename=DATA_FILE, max_entries=MAX_ENTRIES): + """Save metrics to JSON file with size limit.""" + try: + if os.path.exists(filename): + with open(filename, 'r') as f: + data = json.load(f) + else: + data = [] + data.append(metrics) + if len(data) > max_entries: + data = data[-max_entries:] + with open(filename, 'w') as f: + json.dump(data, f, indent=2) + return True + except Exception as e: + print(f"Error saving data: {e}") + return False + +def run_monitor(): + """Main monitoring loop.""" + print(f"🚀 Starting monitoring for {TARGET_URL}") + print(f"📊 Data will be saved to {DATA_FILE}") + print("=" * 50) + + while True: + try: + print(f"[{datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] Collecting metrics...") + metrics = collect_metrics() + + status = "✅ UP" if metrics['is_up'] else "❌ DOWN" + print(f" Status: {status}") + print(f" Latency: {metrics['latency_ms']} ms") + print(f" DNS: {metrics['dns_ms']} ms") + print(f" SSL: {metrics['ssl_days_remaining']} days remaining") + print(f" Search: {metrics['search_latency_ms']} ms") + + if save_metrics(metrics): + print(" ✅ Data saved") + else: + print(" ❌ Failed to save data") + print("-" * 50) + + except KeyboardInterrupt: + print("\n🛑 Monitoring stopped by user") + break + except Exception as e: + print(f"❌ Error in monitoring loop: {e}") + + time.sleep(60) + +if __name__ == "__main__": + run_monitor() \ No newline at end of file diff --git a/q5-mithal-monitor/requirements.txt b/q5-mithal-monitor/requirements.txt new file mode 100644 index 0000000..077c95d --- /dev/null +++ b/q5-mithal-monitor/requirements.txt @@ -0,0 +1 @@ +requests==2.31.0 \ No newline at end of file