From 57348b5ff56568fc194441e611564ac37c8f74eb Mon Sep 17 00:00:00 2001 From: ghaymah_dev Date: Sun, 28 Sep 2025 11:00:40 +0000 Subject: [PATCH] Add readme.md --- readme.md | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 readme.md diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..9452327 --- /dev/null +++ b/readme.md @@ -0,0 +1,57 @@ +# بسم الله الرحمن الرحيم + + +# API Development with Monitoring + +**Objective:** +Build a demo API (e.g., for a store, booking system, or any domain of your choice) with 6-7 documented endpoints, implement logging, monitor errors via a Bash script, and automate API requests. + +--- + +## Part 1: API Implementation +### Requirements: +1. **Framework**: Use any backend framework (e.g., Flask, Django, Express, Spring Boot). +2. **Endpoints**: + - Include 6-7 RESTful endpoints (e.g., `GET /items`, `POST /order`, `PUT /update`). + - Implement basic CRUD operations. +3. **Documentation**: + - Document all endpoints using **Swagger/OpenAPI**. +4. **Logging**: + - Configure the API to log all output (requests, errors, etc.) to a file (e.g., `api.log`). + +--- + +## Part 2: Log Monitoring with Bash +### Requirements: +1. **Script**: Write a Bash script (`monitor.sh`) that: + - Continuously reads the API log file (`api.log`). + - Detects HTTP error codes (e.g., `4XX`, `5XX`) or unusual patterns (e.g., "failed", "timeout"). +2. **Alerting**: + - On error detection, the script must: + - Capture server metadata (IP, CPU/RAM usage, disk space) using commands like `df`, `free`, `top`. + - Send a JSON payload to a **Ghaymah endpoint** (URL provided later) via `curl`. Example payload: + ```json + { + "error": "500 Internal Server Error", + "timestamp": "2023-11-15T12:00:00Z", + "message": "db not connected", + "server_metrics": { + "ip": "192.168.1.1", + "cpu_usage": "75%", + "ram_available": "2GB", + "disk_space": "50GB" + } + } + ``` + +--- + +## Part 3: API Automation Testing +### Requirements: +1. **Script**: Write a second Bash script (`test_api.sh`) to automate API requests: + - Send `GET`, `POST`, `PUT`, `DELETE` requests to your endpoints. + - Include payloads for `POST/PUT` (e.g., adding a new item). + - Log responses to a file (`test_results.log`). + + +