Merge branch 'master' of http://192.168.50.111:13000/king/ResourceUsageAPI
This commit is contained in:
@@ -1,5 +1,105 @@
|
|||||||
# dotnet
|
# Resource Usage API
|
||||||
|
|
||||||
|
This project is a background service developed using ASP.NET Core that monitors system resource usage, such as CPU, RAM, GPU, and running games. The service provides APIs to fetch the current resource usage and kill specified processes.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- **Resource Monitoring**: Fetches detailed information about the system's resources, including:
|
||||||
|
- Current Time
|
||||||
|
- Computer Information (Machine Name, OS Version, Architecture, Processor Count)
|
||||||
|
- CPU Usage
|
||||||
|
- RAM Usage
|
||||||
|
- GPU Usage
|
||||||
|
- Currently Running Steam Games (if any)
|
||||||
|
|
||||||
|
- **Process Management**: Provides an API to kill processes by their process ID.
|
||||||
|
|
||||||
|
## Directory Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
ResourceUsageAPI/
|
||||||
|
├── Worker.cs
|
||||||
|
├── Program.cs
|
||||||
|
├── Startup.cs
|
||||||
|
└── NvmlWrapper.cs
|
||||||
|
```
|
||||||
|
|
||||||
|
## Code Analysis
|
||||||
|
|
||||||
|
### Worker.cs
|
||||||
|
|
||||||
|
This file contains the main logic for monitoring system resources and exposing APIs.
|
||||||
|
|
||||||
|
- **Dependencies**: Uses `System.Diagnostics`, `Microsoft.AspNetCore.Builder`, `Newtonsoft.Json` among others.
|
||||||
|
- **Methods**:
|
||||||
|
- `ExecuteAsync`: Sets up the ASP.NET Core web application, defines routes for resource usage and process management, and runs the server.
|
||||||
|
- `GetComputerInfo`: Retrieves basic system information.
|
||||||
|
- `GetCpuUsage`: Fetches CPU usage and lists top three processes by CPU usage if usage is over 80%.
|
||||||
|
- `GetRamUsage`: Calculates RAM usage percentage.
|
||||||
|
- `GetTotalPhysicalMemory`: Retrieves total physical memory size.
|
||||||
|
- `GetGpuUsage`: Uses NVIDIA Management Library (NVML) to fetch GPU usage, temperature, and fan speed.
|
||||||
|
- `GetCurrentlyRunningGame`: Detects if a Steam game is running by checking process paths.
|
||||||
|
- `GetCurrentTime`: Returns the current time.
|
||||||
|
|
||||||
|
### Program.cs
|
||||||
|
|
||||||
|
This file sets up the hosting environment for the application.
|
||||||
|
|
||||||
|
- **Dependencies**: Uses `Microsoft.Extensions.DependencyInjection` and `Microsoft.Extensions.Hosting`.
|
||||||
|
- **Methods**:
|
||||||
|
- `Main`: Entry point of the application, builds and runs the host.
|
||||||
|
- `CreateHostBuilder`: Configures services and determines if the application should run as a Windows service based on command-line arguments or environment variables.
|
||||||
|
|
||||||
|
### Startup.cs
|
||||||
|
|
||||||
|
This file is not used in the current implementation since all routing and configuration are done within `Worker.cs`.
|
||||||
|
|
||||||
|
- **Dependencies**: Uses `Microsoft.AspNetCore.Builder` and `Microsoft.AspNetCore.Hosting`.
|
||||||
|
- **Methods**:
|
||||||
|
- `ConfigureServices`: Placeholder method for adding services.
|
||||||
|
- `Configure`: Placeholder method for configuring application HTTP requests pipeline.
|
||||||
|
|
||||||
|
### NvmlWrapper.cs
|
||||||
|
|
||||||
|
This file provides a C# wrapper for the NVIDIA Management Library (NVML) functions.
|
||||||
|
|
||||||
|
- **Dependencies**: Uses `System` and `System.Runtime.InteropServices`.
|
||||||
|
- **Methods**:
|
||||||
|
- Importing NVML DLL functions to interact with GPU hardware.
|
||||||
|
- Structures like `NvmlUtilization` are defined for handling utilization rates returned by NVML.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
1. **Build the Project**: Use your preferred .NET build tool (e.g., `dotnet build`) to compile the project.
|
||||||
|
2. **Run the Application**:
|
||||||
|
- To run as a console application, execute the compiled binary directly.
|
||||||
|
- To run as a Windows service, use the command-line argument `--windows-service` or set the environment variable `RUN_AS_SERVICE` to `"true"`.
|
||||||
|
|
||||||
|
## APIs
|
||||||
|
|
||||||
|
- **Get Resource Usage**:
|
||||||
|
- URL: `/api/resource-usage`
|
||||||
|
- Method: GET
|
||||||
|
- Description: Retrieves current system resource usage.
|
||||||
|
|
||||||
|
- **Kill Process**:
|
||||||
|
- URL: `/api/kill-process`
|
||||||
|
- Method: POST
|
||||||
|
- Body: JSON with the process ID (`{"id": "1234"}`)
|
||||||
|
- Description: Kills the specified process.
|
||||||
|
|
||||||
|
## Important Notes
|
||||||
|
|
||||||
|
- Ensure that the NVIDIA Management Library (NVML) is installed on the system for GPU monitoring to work.
|
||||||
|
- The application allows CORS from all origins, which should be configured securely in production environments.
|
||||||
|
- Error handling and logging are minimal; consider adding robust error handling and logging mechanisms for a production-ready solution.
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
Feel free to contribute by opening issues or submitting pull requests. Make sure to follow the project's coding style and best practices.
|
||||||
|
|
||||||
|
|
||||||
|
# devnote
|
||||||
dotnet run
|
dotnet run
|
||||||
git add .
|
git add .
|
||||||
git commit -m "Add steam running games"
|
git commit -m "Add steam running games"
|
||||||
|
|||||||
Reference in New Issue
Block a user