هذا الالتزام موجود في:
2026-07-26 19:57:48 +03:00
التزام a6e65f3f37
29 ملفات معدلة مع 3538 إضافات و0 حذوفات

137
q1-deploy-monitor/README.md Normal file
عرض الملف

@@ -0,0 +1,137 @@
# Ghaymah Cloud Container Deployment & Monitoring
A lightweight, production-ready Go REST API deployed on **ghaymah.systems** containers platform, featuring an automated Bash health monitoring daemon and a modern web-based SRE monitoring dashboard.
---
## 📌 Project Overview
This repository fulfills the SRE Container Deployment and Monitoring technical requirements:
1. **REST API Service (`app/main.go`)**: Built in Go, offering `/`, `/health`, and `/metrics` endpoints with CORS enabled.
2. **Containerization (`app/Dockerfile`)**: Optimized multi-stage Docker build utilizing Alpine Linux and running under a non-root security context.
3. **Cloud Deployment**: Deployed on `ghaymah.systems` container platform at:
- **Live Health Endpoint**: `https://gheyma-app-2b88268529f9.hosted.ghaymah.systems/health`
- **Live Metrics Endpoint**: `https://gheyma-app-2b88268529f9.hosted.ghaymah.systems/metrics`
4. **Automated Monitoring Daemon (`health-check.sh`)**: Bash script executing periodic health probes every 30 seconds, measuring response time, HTTP status, and logging results to `monitor.log`.
5. **SRE Live Dashboard (`dashboard/`)**: Single-page frontend dashboard built with HTML, CSS, and Vanilla JavaScript displaying live service health status, real-time latency graphs, total API request counts, and uptime timeline.
---
## 🏗️ Architecture & Directory Structure
```
.
├── app/ # Application backend files
│ ├── main.go # Go API server source code
│ ├── go.mod # Go module specification
│ ├── Dockerfile # Multi-stage Dockerfile for Go API
│ └── .dockerignore # Docker ignore rules
├── dashboard/ # Monitoring Web Dashboard
│ ├── Dockerfile # Nginx Dockerfile for static frontend serving
│ ├── index.html # Main dashboard UI structure
│ ├── style.css # Custom styling (dark mode, glassmorphism, animations)
│ └── script.js # Frontend engine (live polling, canvas rendering, state tracking)
├── health-check.sh # Bash health check monitoring script (every 30s)
├── monitor.log # Output log generated by monitoring script
└── README.md # Project documentation
```
### 1. Go API Server (`app/main.go`)
- **Endpoints**:
- `GET /`: Returns welcome payload `{"message": "Hello, World!"}` and increments request counter.
- `GET /health`: Returns service health status `{"status": "healthy"}` and increments request counter.
- `GET /metrics`: Exposes internal request metrics `{"requests": <count>}` without incrementing counter.
- **CORS Support**: Implements `Access-Control-Allow-Origin: *` to enable browser-based dashboard monitoring across domains.
### 2. Multi-Stage Dockerfile (`app/Dockerfile`)
- **Build Stage**: Compiles the Go application binary using `golang:1.26-alpine`.
- **Runtime Stage**: Executes inside lightweight `alpine:3.20`.
- **Security Context**: Creates and executes under an unprivileged `appuser` (non-root).
- **Port Exposure**: Exposes port `8080`.
### 3. Monitoring Script (`health-check.sh`)
- **Probe Frequency**: Every 30 seconds (`INTERVAL=30`).
- **Target URL**: `https://gheyma-app-2b88268529f9.hosted.ghaymah.systems/health`.
- **Metrics Collected**: HTTP Status Code and total response execution time (seconds).
- **Log Format**: `YYYY-MM-DD HH:MM:SS - STATUS_LEVEL - Details` appended to `monitor.log`.
### 4. Live SRE Dashboard (`dashboard/`)
- **KPI Metrics**:
- **Service Status**: Visual indicator (Healthy / Unhealthy).
- **Response Time**: Real-time round-trip latency in milliseconds + history canvas chart.
- **Total Requests**: Fetched live from `/metrics`.
- **Features**:
- Auto-refresh interval (15s) with manual refresh option.
- Success ratio doughnut chart and interactive check timeline.
- Primary cloud endpoint monitoring with local fallback capability.
---
## 🚀 Getting Started & Local Usage
### Running the API Server Locally
```bash
# Navigate to app directory and run Go service
cd app
go run main.go
```
The server will start listening on `http://localhost:8080`.
### Building & Running with Docker
```bash
# Build the Docker image from root directory
docker build -t ghaymah-api-service ./app
# Run the container
docker run -d -p 8080:8080 --name ghaymah-api ghaymah-api-service
```
### Running the Monitoring Script
```bash
# Grant execution permissions (Linux/macOS/Git Bash)
chmod +x health-check.sh
# Run the monitoring daemon
./health-check.sh
```
### Viewing the Monitoring Dashboard
You can serve the `dashboard/` directory using Nginx, Docker, or any static file server:
```bash
# Using Docker (Nginx)
cd dashboard
docker build -t ghaymah-dashboard .
docker run -d -p 80:80 ghaymah-dashboard
```
Or open `dashboard/index.html` directly in your web browser.
---
## 🔍 Verification & Health Checks
Verify the live cloud application using `curl`:
```bash
# Health endpoint check
curl -i https://gheyma-app-2b88268529f9.hosted.ghaymah.systems/health
# Expected output:
# HTTP/1.1 200 OK
# Content-Type: application/json
# {"status":"healthy"}
# Metrics endpoint check
curl -i https://gheyma-app-2b88268529f9.hosted.ghaymah.systems/metrics
# Expected output:
# HTTP/1.1 200 OK
# Content-Type: application/json
# {"requests":53}
```