# ResourceFit
**ResourceFit** is a command-line tool designed to analyze Docker container resource usage and recommend the most cost-effective Amazon Web Services (AWS) EC2 instances based on the container's memory, CPU, and disk space requirements. It fetches real-time container stats, normalizes the data, and compares them against available EC2 instance options, taking AWS EBS storage and pricing into account.
## Features
- **Host Machine Stats:** Collects and displays CPU, memory, disk, and network information from the host machine.
- **Docker Container Stats:** Analyzes running Docker containers, showing stats like CPU usage, memory consumption, and network I/O.
- **EC2 Recommendations:** Recommends AWS EC2 instances based on the resource needs of the selected Docker container.
- **AWS Pricing Data:** Fetches EC2 and EBS pricing data to make cost-efficient recommendations.
- **Memory and Disk Space Buffers:** Includes customizable memory buffers (50-100%) to ensure recommended instances meet peak resource demands.
## Installation
To install ResourceFit, follow the steps below:
1. Have python (version 3.9 and above) installed on your device, follow the link below to do this:
```bash
https://www.python.org/downloads/
```
2. Install ResourceFit:
```bash
pip install resourcefit
```
## Usage
Once installed, you can use `resourcefit` from the command line:
```bash
resourcefit
```
The tool will:
1. Display a list of running Docker containers.
2. Allow you to select a container to analyze.
3. Show real-time stats for the selected container (CPU, memory, I/O).
4. Fetch and display AWS EC2 and EBS pricing data.
5. Recommend the top three EC2 instances based on the selected container's resource usage and disk space requirements.
## Example Output
```bash
Select a container to analyze:
1. webapp (ID: 123abc456def) - Image: webapp:latest
2. nginx (ID: 789ghi012jkl) - Image: nginx:latest
Enter the number of the container (default 1) [1]:
Selected Container ID: 123abc456def
Docker Container Stats:
container_id: 123abc456def
name: webapp
cpu_usage: 0.24%
mem_usage: 256.00 MiB / 1.00 GiB
mem_percentage: 25.00%
net_io_rx: 10.00 kB
net_io_tx: 5.00 kB
block_io_read: 0.00 MB
block_io_write: 0.05 MB
pids: 5
Fetching AWS EC2 pricing data...
Top 3 EC2 Instance Recommendations:
Instance Type Memory vCPU Storage priceMonthly
191 t4g.nano 0.5 2 EBS only (5.00 GB) 3.466
277 t3a.nano 0.5 2 EBS only (5.00 GB) 3.831
648 t3.nano 0.5 2 EBS only (5.00 GB) 4.196
```
## Dependencies
ResourceFit requires the following Python libraries:
- `psutil`: For host machine stats.
- `docker`: For Docker container stats.
- `pandas`: For data handling.
- `requests`: To fetch AWS pricing data.
- `click`: For the command-line interface.
## How It Works
### Step 1: Host Machine Stats
The tool collects basic host machine stats, including CPU count, memory size, disk I/O, and network I/O.
### Step 2: Docker Container Stats
It lists running Docker containers and provides real-time statistics (CPU, memory, and I/O usage) for the selected container.
### Step 3: AWS Pricing Data
ResourceFit fetches EC2 and EBS pricing data from AWS for both Linux and Windows instances in the specified region.
### Step 4: EC2 Instance Recommendations
Based on the Docker container stats, ResourceFit recommends the top EC2 instances, applying a 50% memory buffer for peak loads. It also factors in disk space requirements for instances with EBS storage.
## Customization
### Memory Buffer Factor
The default memory buffer factor is set to 1.5 (50% more memory). This can be adjusted in the source code based on your needs.
### AWS Region
By default, the AWS region is set to 'US East (N. Virginia)', but this can be modified in the code to support different regions.
## License
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
## Contributing
Contributions are welcome! Please feel free to submit pull requests or open issues if you encounter any bugs or have feature requests.
Raw data
{
"_id": null,
"home_page": "https://github.com/ojimba01/resourcefit",
"name": "resourcefit",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "docker, EC2, AWS, cloud",
"author": "Olayinka Jimba",
"author_email": "\"Olayinka Jimba Jr.\" <ojimba01@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/b1/c2/6efcd985c5b918bd92f94cd2e6d4a76ce9209c0b40d713932aff9b6fc8be/resourcefit-0.1.3.tar.gz",
"platform": null,
"description": "\n# ResourceFit\n\n**ResourceFit** is a command-line tool designed to analyze Docker container resource usage and recommend the most cost-effective Amazon Web Services (AWS) EC2 instances based on the container's memory, CPU, and disk space requirements. It fetches real-time container stats, normalizes the data, and compares them against available EC2 instance options, taking AWS EBS storage and pricing into account.\n\n## Features\n\n- **Host Machine Stats:** Collects and displays CPU, memory, disk, and network information from the host machine.\n- **Docker Container Stats:** Analyzes running Docker containers, showing stats like CPU usage, memory consumption, and network I/O.\n- **EC2 Recommendations:** Recommends AWS EC2 instances based on the resource needs of the selected Docker container.\n- **AWS Pricing Data:** Fetches EC2 and EBS pricing data to make cost-efficient recommendations.\n- **Memory and Disk Space Buffers:** Includes customizable memory buffers (50-100%) to ensure recommended instances meet peak resource demands.\n\n## Installation\n\nTo install ResourceFit, follow the steps below:\n\n1. Have python (version 3.9 and above) installed on your device, follow the link below to do this:\n\n ```bash\n https://www.python.org/downloads/\n ```\n\n2. Install ResourceFit:\n\n ```bash\n pip install resourcefit\n ```\n\n## Usage\n\nOnce installed, you can use `resourcefit` from the command line:\n\n```bash\nresourcefit\n```\n\nThe tool will:\n\n1. Display a list of running Docker containers.\n2. Allow you to select a container to analyze.\n3. Show real-time stats for the selected container (CPU, memory, I/O).\n4. Fetch and display AWS EC2 and EBS pricing data.\n5. Recommend the top three EC2 instances based on the selected container's resource usage and disk space requirements.\n\n## Example Output\n\n```bash\nSelect a container to analyze:\n1. webapp (ID: 123abc456def) - Image: webapp:latest\n2. nginx (ID: 789ghi012jkl) - Image: nginx:latest\n\nEnter the number of the container (default 1) [1]:\n\nSelected Container ID: 123abc456def\n\nDocker Container Stats:\ncontainer_id: 123abc456def\nname: webapp\ncpu_usage: 0.24%\nmem_usage: 256.00 MiB / 1.00 GiB\nmem_percentage: 25.00%\nnet_io_rx: 10.00 kB\nnet_io_tx: 5.00 kB\nblock_io_read: 0.00 MB\nblock_io_write: 0.05 MB\npids: 5\n\nFetching AWS EC2 pricing data...\n\nTop 3 EC2 Instance Recommendations:\n Instance Type Memory vCPU Storage priceMonthly\n191 t4g.nano 0.5 2 EBS only (5.00 GB) 3.466\n277 t3a.nano 0.5 2 EBS only (5.00 GB) 3.831\n648 t3.nano 0.5 2 EBS only (5.00 GB) 4.196\n```\n\n## Dependencies\n\nResourceFit requires the following Python libraries:\n\n- `psutil`: For host machine stats.\n- `docker`: For Docker container stats.\n- `pandas`: For data handling.\n- `requests`: To fetch AWS pricing data.\n- `click`: For the command-line interface.\n\n## How It Works\n\n### Step 1: Host Machine Stats\nThe tool collects basic host machine stats, including CPU count, memory size, disk I/O, and network I/O.\n\n### Step 2: Docker Container Stats\nIt lists running Docker containers and provides real-time statistics (CPU, memory, and I/O usage) for the selected container.\n\n### Step 3: AWS Pricing Data\nResourceFit fetches EC2 and EBS pricing data from AWS for both Linux and Windows instances in the specified region.\n\n### Step 4: EC2 Instance Recommendations\nBased on the Docker container stats, ResourceFit recommends the top EC2 instances, applying a 50% memory buffer for peak loads. It also factors in disk space requirements for instances with EBS storage.\n\n## Customization\n\n### Memory Buffer Factor\nThe default memory buffer factor is set to 1.5 (50% more memory). This can be adjusted in the source code based on your needs.\n\n### AWS Region\nBy default, the AWS region is set to 'US East (N. Virginia)', but this can be modified in the code to support different regions.\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.\n\n## Contributing\n\nContributions are welcome! Please feel free to submit pull requests or open issues if you encounter any bugs or have feature requests.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "CLI tool for analyzing Docker containers and recommending EC2 instances.",
"version": "0.1.3",
"project_urls": {
"Bug Tracker": "https://github.com/ojimba01/resourcefit/issues",
"Homepage": "https://github.com/ojimba01/resourcefit",
"Repository": "https://github.com/ojimba01/resourcefit"
},
"split_keywords": [
"docker",
" ec2",
" aws",
" cloud"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "bdc7526e9b195c6dae5165b0d50b322290d9cff20d36feea924f8a7994d4f8ab",
"md5": "4acb9f4bb67bb4c97fbee99ebe384bc1",
"sha256": "c38cba260092597649120d63a268d2611192efd0501589d337a714e2424ac475"
},
"downloads": -1,
"filename": "resourcefit-0.1.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "4acb9f4bb67bb4c97fbee99ebe384bc1",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 10322,
"upload_time": "2024-10-24T19:39:33",
"upload_time_iso_8601": "2024-10-24T19:39:33.082082Z",
"url": "https://files.pythonhosted.org/packages/bd/c7/526e9b195c6dae5165b0d50b322290d9cff20d36feea924f8a7994d4f8ab/resourcefit-0.1.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b1c26efcd985c5b918bd92f94cd2e6d4a76ce9209c0b40d713932aff9b6fc8be",
"md5": "998c1e4a08c6cf32a87518b9240f05f1",
"sha256": "e8a579d3c2f38e6e0b48a734de6f3a5704e9328dd8b54bb7ea403eb5d290abc2"
},
"downloads": -1,
"filename": "resourcefit-0.1.3.tar.gz",
"has_sig": false,
"md5_digest": "998c1e4a08c6cf32a87518b9240f05f1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 11773,
"upload_time": "2024-10-24T19:39:34",
"upload_time_iso_8601": "2024-10-24T19:39:34.295661Z",
"url": "https://files.pythonhosted.org/packages/b1/c2/6efcd985c5b918bd92f94cd2e6d4a76ce9209c0b40d713932aff9b6fc8be/resourcefit-0.1.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-24 19:39:34",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ojimba01",
"github_project": "resourcefit",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "resourcefit"
}