Add readme.md
هذا الالتزام موجود في:
57
readme.md
Normal file
57
readme.md
Normal file
@@ -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`).
|
||||
|
||||
|
||||
|
المرجع في مشكلة جديدة
حظر مستخدم