201 lines
No EOL
5.9 KiB
Markdown
201 lines
No EOL
5.9 KiB
Markdown
# OGP Agent Resource Stats Collection
|
|
|
|
This document describes the integrated resource statistics collection system in the OGP agents that replaces the standalone Python collector.py script.
|
|
|
|
## Overview
|
|
|
|
The OGP agents now include built-in resource monitoring that collects:
|
|
- **Machine-wide statistics:** CPU usage, memory, disk space, network activity, load averages
|
|
- **Per-server process statistics:** Memory usage, CPU usage, I/O statistics, listening ports, folder sizes
|
|
|
|
Data is automatically inserted into the same MySQL database tables used by the web panel for display.
|
|
|
|
## Configuration
|
|
|
|
### Database Configuration
|
|
|
|
Update the agent configuration files with your database connection details:
|
|
|
|
**Linux Agent:** `_agent-linux/Cfg/Config.pm`
|
|
**Windows Agent:** `_agent-windows/Cfg/Config.pm`
|
|
|
|
```perl
|
|
# Resource stats database configuration
|
|
stats_db_host => '127.0.0.1', # Database server hostname/IP
|
|
stats_db_user => 'panel_user', # Database username
|
|
stats_db_pass => 'your_password_here', # Database password
|
|
stats_db_name => 'panel_database', # Database name (same as your web panel)
|
|
stats_table_prefix => 'gsp_', # Table prefix (must match collector.py)
|
|
stats_frequency_minutes => '5', # Collection frequency in minutes
|
|
```
|
|
|
|
### Database Tables
|
|
|
|
The system uses the same database tables as the original collector.py:
|
|
|
|
```sql
|
|
-- Machine catalog
|
|
gsp_machines
|
|
|
|
-- Machine-wide samples (CPU, memory, disk, network)
|
|
gsp_machine_samples
|
|
|
|
-- Per-process/per-server samples
|
|
gsp_process_samples
|
|
```
|
|
|
|
Run the SQL schema from `modules/resource_stats/mysql_query.sql` to create these tables if they don't exist.
|
|
|
|
### Required Perl Modules
|
|
|
|
The agents require these Perl modules for database connectivity:
|
|
|
|
```bash
|
|
# Ubuntu/Debian
|
|
sudo apt-get install libdbi-perl libdbd-mysql-perl
|
|
|
|
# CentOS/RHEL
|
|
sudo yum install perl-DBI perl-DBD-MySQL
|
|
|
|
# Or via CPAN
|
|
cpan DBI DBD::mysql
|
|
```
|
|
|
|
## Features
|
|
|
|
### Automatic Integration
|
|
- Runs automatically as part of the agent scheduler
|
|
- No separate cron jobs required
|
|
- Starts when the agent starts
|
|
- Stops when the agent stops
|
|
|
|
### Platform Support
|
|
|
|
**Linux Agent:**
|
|
- Uses `/proc` filesystem for system stats
|
|
- Native command-line tools (`df`, `netstat`, etc.)
|
|
- Full CPU, memory, disk, and network monitoring
|
|
- Process association via working directory and command line analysis
|
|
|
|
**Windows Agent:**
|
|
- Uses `wmic` for system information
|
|
- Native Windows commands (`dir`, `netstat`)
|
|
- CPU, memory, disk monitoring (no load averages on Windows)
|
|
- Process association via executable path and command line analysis
|
|
|
|
### Process Detection
|
|
|
|
The system automatically detects game server processes by:
|
|
1. Scanning for subdirectories in the agent directory
|
|
2. Finding processes whose working directory, executable path, or command line references these directories
|
|
3. Collecting detailed metrics for each associated process
|
|
|
|
### Data Collection
|
|
|
|
**Machine-wide metrics:**
|
|
- Load averages (Linux only)
|
|
- CPU percentage
|
|
- Memory usage (used/total/percentage)
|
|
- Swap usage
|
|
- Disk usage for agent directory
|
|
- Network interface statistics
|
|
- Network throughput
|
|
|
|
**Process-specific metrics:**
|
|
- Process ID and name
|
|
- Command line
|
|
- CPU percentage
|
|
- Memory usage (RSS/VMS)
|
|
- I/O statistics (read/write bytes)
|
|
- Open file descriptors
|
|
- Listening network ports
|
|
- Server directory size
|
|
|
|
## Monitoring and Troubleshooting
|
|
|
|
### Log Messages
|
|
|
|
The agent logs resource collection activity:
|
|
|
|
```
|
|
Starting resource stats collection
|
|
Resource stats collection completed
|
|
```
|
|
|
|
### Error Handling
|
|
|
|
If database modules are not available:
|
|
```
|
|
DBD::mysql not available - resource stats collection disabled
|
|
```
|
|
|
|
If database connection fails:
|
|
```
|
|
Failed to connect to stats database: [error details]
|
|
```
|
|
|
|
### Verification
|
|
|
|
To verify the system is working:
|
|
|
|
1. Check agent logs for collection messages
|
|
2. Query the database tables:
|
|
```sql
|
|
SELECT COUNT(*) FROM gsp_machine_samples WHERE ts >= NOW() - INTERVAL 1 HOUR;
|
|
SELECT COUNT(*) FROM gsp_process_samples WHERE ts >= NOW() - INTERVAL 1 HOUR;
|
|
```
|
|
|
|
### Performance Impact
|
|
|
|
- Collection runs every 5 minutes by default (configurable)
|
|
- Minimal performance overhead during collection
|
|
- Uses native system tools for maximum efficiency
|
|
- Database operations are optimized with prepared statements
|
|
|
|
## Migration from collector.py
|
|
|
|
To migrate from the standalone Python collector:
|
|
|
|
1. **Stop the cron job** running collector.py
|
|
2. **Install Perl database modules** on agent machines
|
|
3. **Update agent configuration** with database details
|
|
4. **Restart OGP agents** to enable collection
|
|
5. **Verify data collection** is working
|
|
6. **Remove collector.py and Python dependencies**
|
|
|
|
The new system produces identical data to collector.py and uses the same database schema, so existing dashboards and reports will continue to work without changes.
|
|
|
|
## Frequency Configuration
|
|
|
|
The collection frequency can be adjusted by changing `stats_frequency_minutes` in the config:
|
|
|
|
- `stats_frequency_minutes => '1'` - Every minute (high frequency)
|
|
- `stats_frequency_minutes => '5'` - Every 5 minutes (default)
|
|
- `stats_frequency_minutes => '15'` - Every 15 minutes (low frequency)
|
|
|
|
Note: Very high frequencies (every minute) may impact performance on busy servers.
|
|
|
|
## Security Considerations
|
|
|
|
- Database credentials are stored in agent configuration files
|
|
- Use dedicated database user with minimal privileges
|
|
- Consider firewall rules if database is on separate server
|
|
- Monitor database connections and prevent connection leaks
|
|
|
|
## Troubleshooting Common Issues
|
|
|
|
**Collection not working:**
|
|
1. Check if DBD::mysql is installed
|
|
2. Verify database connection details
|
|
3. Check database user permissions
|
|
4. Review agent logs for error messages
|
|
|
|
**Missing process data:**
|
|
1. Verify game servers are running from subdirectories
|
|
2. Check process detection logic matches your server layout
|
|
3. Review process association in agent logs
|
|
|
|
**Performance issues:**
|
|
1. Reduce collection frequency
|
|
2. Check database performance
|
|
3. Monitor agent resource usage during collection |