121 Commits

Author SHA1 Message Date
c35d95f2cc fix(metrics): enhance metrics dashboard layout and optimize database queries
- Increased the bottom margin of charts in the metrics dashboard for improved visual spacing.
- Added titles to the charts for better context and understanding of displayed data.
- Introduced composite indexes in the database to optimize aggregation queries and improve performance.
- Modified the SQL query in GetRecentMetrics to calculate incremental changes in metrics, enhancing data accuracy and usability.

These changes improve the user experience by providing clearer visualizations and more efficient data retrieval in the metrics dashboard.
2024-12-05 01:46:25 +08:00
68a0ea234b fix(metrics): refine chart handling and data validation in metrics dashboard
- Updated chart management logic to ensure proper destruction of existing charts before creating new ones, preventing memory leaks.
- Enhanced data validation by adding a check for the data format returned from the API, ensuring it is an array before processing.
- Consolidated chart options into a common configuration for improved consistency across different charts.
- Improved the updateChart function to handle canvas element existence checks and streamline chart creation.

These changes enhance the performance and reliability of the metrics dashboard, providing clearer visualizations and better data handling.
2024-12-05 01:28:17 +08:00
b5a3cfeee4 fix(metrics): improve chart management in metrics dashboard
- Added logic to destroy existing charts before creating new ones, preventing memory leaks and ensuring proper chart updates.
- Updated the currentCharts object to maintain references to the newly created charts, enhancing the management of chart instances.
- These changes improve the performance and reliability of the metrics dashboard by ensuring that charts are correctly handled during updates.
2024-12-05 01:22:58 +08:00
660e60576d fix(metrics): enhance metrics chart rendering and data handling
- Updated the metrics chart rendering logic to reverse the data order for a more intuitive time progression from left to right.
- Introduced chart options to ensure the x-axis is not reversed, improving the clarity of time-based data visualization.
- Modified the updateChart function to accept additional options, allowing for more flexible chart configurations.
- Added a safeguard in GetRecentMetrics to return a default empty record instead of null when no metrics are available, enhancing data reliability.

These changes improve the user experience by providing clearer visualizations and ensuring consistent data handling in the metrics dashboard.
2024-12-05 01:13:11 +08:00
8858c41419 Merge branch 'main' of https://github.com/woodchen-ink/proxy-go 2024-12-05 01:06:57 +08:00
59358cbe8a fix(metrics): update SQL query to use localtime for accurate metrics retrieval
- Modified the SQL query in GetRecentMetrics to utilize the 'localtime' modifier for timestamp handling, ensuring that metrics are retrieved based on the local time zone.
- This change enhances the accuracy of the metrics data by aligning the time calculations with local time, improving the reliability of performance monitoring.
2024-12-05 01:06:55 +08:00
wood chen
12b85b24e7
Merge pull request #1 from woodchen-ink/dependabot/go_modules/modernc.org/sqlite-1.34.2
chore(deps): bump modernc.org/sqlite from 1.28.0 to 1.34.2
2024-12-04 12:10:49 +08:00
60b115438a fix(metrics): update AvgLatency type and improve SQL query for metrics retrieval
- Changed AvgLatency field type from int64 to float64 in HistoricalMetrics for better precision in latency measurements.
- Updated SQL query in GetRecentMetrics to ensure proper averaging of AvgLatency by casting to float, enhancing accuracy in metrics reporting.
- These changes improve the reliability of metrics data and ensure more accurate performance monitoring.
2024-12-04 11:57:08 +08:00
dependabot[bot]
adfacfdeeb
chore(deps): bump modernc.org/sqlite from 1.28.0 to 1.34.2
Bumps [modernc.org/sqlite](https://gitlab.com/cznic/sqlite) from 1.28.0 to 1.34.2.
- [Commits](https://gitlab.com/cznic/sqlite/compare/v1.28.0...v1.34.2)

---
updated-dependencies:
- dependency-name: modernc.org/sqlite
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-03 12:35:22 +00:00
a009dd04a8 refactor(metrics): remove historical data section from metrics dashboard template
- Eliminated the historical data section from the metrics dashboard, including time range buttons and associated chart containers.
- Streamlined the metrics template for improved clarity and focus on current metrics display.
- This change enhances the user experience by simplifying the dashboard layout.
2024-12-03 18:27:04 +08:00
837820639f feat(metrics): implement database initialization and cleanup for metrics tracking
- Added initTables function to create necessary tables for metrics history, status statistics, and path statistics in the database.
- Implemented indexing on timestamp columns to enhance query performance.
- Introduced a cleanupRoutine function to periodically delete old metrics data based on retention policies, improving database management.
- Integrated logging for cleanup operations to monitor success and errors during the cleanup process.
2024-12-03 18:25:23 +08:00
b69a78eae0 feat(metrics): enhance metrics dashboard with time range buttons and chart updates
- Replaced the time range dropdown with a set of buttons for selecting different time ranges (1 hour, 6 hours, 12 hours, 24 hours, 3 days, 5 days, 7 days, 15 days, 30 days).
- Improved the styling of the time range buttons for better user experience.
- Refactored chart loading logic to update existing charts instead of recreating them, enhancing performance and user experience.
- Added functionality to dynamically load historical data based on the selected time range, improving data visualization capabilities.
2024-12-03 18:23:37 +08:00
91d4686713 feat(metrics): add safe type conversion functions and enhance metrics data retrieval
- Introduced safe type conversion functions for memory usage, status code stats, top paths, and recent requests to prevent panics when accessing metrics data.
- Updated MetricsHandler to utilize these safe functions, improving the robustness of metrics handling.
- Refactored GetStats method in Collector to ensure all fields are initialized and to streamline the retrieval of metrics data.
- Enhanced the overall structure of metrics data for better clarity and reliability in reporting.
2024-12-03 18:17:25 +08:00
9602034f9d feat(metrics): improve metrics handling with safe type conversions and enhanced request statistics
- Introduced safe type conversion functions to prevent panics when accessing metrics data.
- Updated MetricsHandler to utilize these functions for retrieving active requests, total requests, total errors, and average response time.
- Enhanced error rate calculation to avoid division by zero.
- Refactored buffer pool management in ProxyHandler for better memory handling.
- Improved target URL determination logic based on file extensions for more flexible proxy behavior.
2024-12-03 18:11:29 +08:00
1db0e6ae98 fix(metrics): update SQLite driver usage in MetricsDB initialization
- Changed the SQLite driver from "sqlite3" to "sqlite" in the NewMetricsDB function for improved compatibility with the new driver.
- This change aligns with the recent dependency update to modernc.org/sqlite, enhancing performance and stability.
2024-12-03 17:59:20 +08:00
54053f3a92 chore(dependencies): update SQLite driver and add indirect dependencies
- Replaced `github.com/mattn/go-sqlite3` with `modernc.org/sqlite` for improved compatibility and performance.
- Updated `go.mod` and `go.sum` to include several indirect dependencies for enhanced functionality and stability.
- Refactored import statements in `metrics.go` and `db.go` to reflect the new SQLite driver.
2024-12-03 17:57:31 +08:00
3962799980 feat(config): update alert configurations and error rate thresholds
- Increased ErrorRate threshold from 0.5 to 0.8 for stricter alerting.
- Added AlertInterval setting to config for customizable notification intervals.
- Updated latency thresholds for small, medium, and large files to improve performance monitoring.
- Enhanced metrics handling to incorporate new alert configurations in the system.
2024-12-03 17:54:45 +08:00
68c27b544b feat(metrics): enhance metrics functionality and configuration
- Added new dependency on github.com/mattn/go-sqlite3 for improved metrics storage.
- Updated main.go to initialize metrics collector with a new database path and configuration settings.
- Enhanced config.json to include additional metrics settings such as alert configurations and latency thresholds.
- Refactored internal metrics handling to support new metrics structures and improve data retrieval.
- Introduced a new metrics history endpoint for retrieving historical data, enhancing monitoring capabilities.
- Improved UI for metrics dashboard to include historical data visualization options.
2024-12-03 17:48:11 +08:00
d4af4c4d31 feat(metrics): enhance metrics collection and UI with top referers tracking
- Added support for tracking top referers in the metrics collector, allowing for better insights into request sources.
- Updated MetricsHandler to include top referers in the metrics response.
- Enhanced the metrics UI to display a new section for the top 10 referers, improving visibility into traffic sources.
- Refactored request recording to capture referer information in the collector for comprehensive statistics.
2024-11-30 22:55:31 +08:00
9be13ce0ef feat(deployment): add SSH deployment commands to Docker build workflow
- Integrated SSH action to automate deployment commands for the proxy-go service.
- Added steps to pull the latest Docker image, stop and remove the existing container, and restart the service using Docker Compose.
- Enhanced the workflow for smoother deployment processes.
2024-11-30 22:27:57 +08:00
040b01f4a4 feat(metrics): integrate comprehensive metrics tracking across handlers
- Enhanced metrics collection in ProxyHandler, MirrorProxyHandler, and FixedPathProxyMiddleware.
- Introduced a centralized metrics collector to streamline request tracking and statistics reporting.
- Updated MetricsHandler to utilize new metrics structure, including total bytes, requests per second, and error rates.
- Improved documentation in readme.md to reflect new features and usage instructions.
- Added support for metrics monitoring at `/metrics/ui` for better visibility into proxy performance.
2024-11-30 22:26:11 +08:00
b8d7659aa9 feat(metrics): enhance metrics reporting with uptime, error rate calculation, and recent requests retrieval
- Added uptime and error rate metrics to the MetricsHandler.
- Introduced helper functions for calculating error rates and retrieving recent requests.
- Improved latency formatting in the metrics template for better readability.
- Streamlined the metrics data structure to include requests per second and recent request logs.
2024-11-30 21:50:32 +08:00
7b6a193434 feat(metrics): enhance metrics UI with detailed traffic statistics, status code breakdown, and recent requests overview 2024-11-30 21:42:30 +08:00
bb830658e0 feat(metrics): add comprehensive metrics display for uptime, request counts, and performance indicators 2024-11-30 21:23:17 +08:00
ef97e833e6 refactor(main): streamline metrics route handling in main function 2024-11-30 21:19:05 +08:00
e9e932b0b7 feat(main): add metrics routes for enhanced monitoring and remove duplicate route definitions 2024-11-30 21:14:16 +08:00
8770d79bb8 feat(docker-compose, config, handler): enhance deployment configuration, add metrics support, and improve proxy handling
- Updated docker-compose.yml to include resource limits and health checks for the service.
- Modified go.mod and go.sum to include the new dependency on golang.org/x/time.
- Enhanced main.go to add new metrics routes for monitoring.
- Updated config.json to include metrics configuration with password and token expiry.
- Refactored internal/config to implement a ConfigManager for dynamic configuration loading.
- Improved internal/handler to utilize a shared HTTP client and added metrics tracking for requests.
2024-11-30 21:11:05 +08:00
7ee1b0efb5 refactor(internal/handler): optimize image request handling and cloudflare headers 2024-11-17 10:47:41 +08:00
74189ed602 feat(internal/handler): optimize image request handling by setting optimized Accept headers and Cloudflare-specific headers 2024-11-17 10:41:26 +08:00
2ce1b02df9 Merge branch 'main' of https://github.com/woodchen-ink/proxy-go 2024-11-17 10:36:36 +08:00
1e65ccad58 refactor(internal/handler): simplify HTTP client configuration and remove strict CSP header 2024-11-17 10:36:34 +08:00
wood chen
1bf60702c2
Update readme.md 2024-11-17 09:58:43 +08:00
c71698e5ad refactor(internal/handler): optimize image request handling based on Accept header 2024-11-17 09:38:01 +08:00
e4d7a16f99 refactor(internal/handler): optimize image request handling and headers 2024-11-17 09:07:14 +08:00
fe6d604600 feat(internal/handler/proxy): enhance proxy handler to handle image requests and important headers
feat(internal/utils): add IsImageRequest function to identify image requests
2024-11-17 09:01:19 +08:00
17f9692ce6 refactor(config): optimize extension mapping handling and add utility methods 2024-11-17 08:24:57 +08:00
c2ba3e4d3d feat(config): add UnmarshalJSON method and update NewProxyHandler parameter type 2024-11-17 08:15:29 +08:00
74280e215e 新增支持: 按不同文件回源不同地址 2024-11-17 08:12:04 +08:00
2653014c89 refactor(handler): enhance mirror proxy handler with URL parsing and CORS headers 2024-11-13 19:50:50 +08:00
a7753f90d5 feat(internal/handler): add CORS support and handle OPTIONS requests in MirrorProxyHandler 2024-11-13 18:24:48 +08:00
2f0be5f38d feat(handler): add mirror proxy handler for URL prefix "/mirror/" 2024-11-13 17:50:06 +08:00
073d364695 style(internal/handler, internal/middleware): Refactor logging format for consistency and clarity 2024-11-03 08:33:38 +08:00
eda76c1683 refactor(internal/handler, internal/middleware): improve access log format and content 2024-11-03 08:10:45 +08:00
3c380ef5e9 refactor(internal/handler, internal/middleware): Move getClientIP and formatBytes to utils package 2024-10-31 08:38:07 +08:00
c2c6e14736 refactor(main): update handler matching logic to use function instead of prefix 2024-10-31 08:24:26 +08:00
b1b6a430cd refactor(internal): improve logging and byte format in proxy handlers 2024-10-31 08:07:03 +08:00
8f2c035e93 feat(config, middleware): add fixed paths configuration and proxy middleware 2024-10-31 07:44:54 +08:00
830eb864ef refactor(main): improve CDNJS path matching logic 2024-10-31 07:21:06 +08:00
06f6011b05 feat(middleware): add CDNJS middleware for handling specific paths 2024-10-31 07:15:48 +08:00
db003a3ae1 Merge branch 'main' of https://github.com/woodchen-ink/proxy-go 2024-10-31 01:26:37 +08:00