BubbleLog

Modern, Hosting-Friendly System Monitoring for Velocity

20

BubbleLog

Modern, Hosting-Friendly System Monitoring for Velocity

Advanced Velocity monitoring plugin that automatically adapts to any hosting environment - from budget shared hosting to dedicated servers.

🌟 Key Features

- ✅ Hot-reload config - Shared, VPS, dedicated, or cloud - 🎯 Hot-reload config - No configuration needed - 🔄 Hot-reload config - JVM monitoring when system access is limited - ⚡ Hot-reload config - Zero performance impact - 📊 Hot-reload config - CPU, RAM, Disk, Network, JVM metrics - 🔔 Hot-reload config - Real-time notifications - 🛠️ Hot-reload config - No restart required

📋 Requirements

- Java: 3.4.0+ - Java: 21+

🚀 Quick Start

1. Download `BubbleLog-2.0.0.jar` 2. Place in `plugins/` folder 3. Start server - that's it!

First Commands

```bash /bubblelog env # Check environment capabilities /bubblelog status # View monitoring status /bubblelog reload # Reload configuration ```

⚙️ Configuration

Default config at `plugins/bubblelog/config.yml`:

```yaml monitoring: interval: 30 # Seconds between checks cpu: { enabled: true } ram: { enabled: true } disk: { enabled: true } network: { enabled: true } jvm: { enabled: true }

alerts: enabled: true thresholds: cpu: 80.0 # Alert at 80% CPU ram: 85.0 # Alert at 85% RAM disk: 90.0 # Alert at 90% disk discord: enabled: false webhook-url: "" ```

Shared Hosting Optimization

```yaml monitoring: interval: 60 # Higher interval for shared hosting jvm: { enabled: true } # Always keep enabled ```

📊 What Gets Monitored

| Metric | Full Access | Shared Hosting | |--------|------------|----------------| | CPU | System CPU | JVM Process CPU | | RAM | System Memory | JVM Heap | | Disk | All Disks | Skipped | | Network | Player stats | Player stats | | JVM | Full metrics | Full metrics |

🎮 Commands

| Command | Description | |---------|-------------| | `/bubblelog env` | Show environment capabilities | | `/bubblelog status` | View monitoring status | | `/bubblelog reload` | Hot-reload configuration | | `/bubblelog validate` | Check config validity | | `/bubblelog test webhook` | Test Discord webhook |

Permission: `bubblelog.admin`

🔧 Troubleshooting

"Limited system access detected"

Normal on shared hosting! Plugin works with JVM-only monitoring.

Performance Issues

Increase monitoring interval: ```yaml monitoring: interval: 120 # Check every 2 minutes ```

Discord Webhooks

1. Create webhook in Discord server settings 2. Copy webhook URL 3. Add to config: ```yaml alerts: discord: enabled: true webhook-url: "https://discord.com/api/webhooks/..." ```

🏗️ Building

```bash .gradlew.bat shadowJar # Windows ./gradlew shadowJar # Linux/Mac ```

Output: `build/libs/BubbleLog-2.0.0.jar`

📝 License

MIT License - See LICENSE file

💬 Support

- Commands: For bug reports - Commands: `/bubblelog env` to check your setup

---

Made for server administrators running Velocity on any hosting! 🚀

```logging:

Name of the log file

filename: "system-usage.log"

Also log to console/server log

console: false

Date format for log entries

date-format: "yyyy-MM-dd HH:mm:ss"

Maximum number of log files to keep (0 = unlimited)

max-files: 7

alerts:

Enable performance alerts

enabled: true thresholds:

CPU usage threshold for alerts (percentage)

cpu: 80.0

RAM usage threshold for alerts (percentage)

ram: 85.0

Disk usage threshold for alerts (percentage)

disk: 90.0

Send alerts to server console

console: true

Log alerts to file

log-to-file: true

Cooldown between same alert types (seconds)

cooldown: 300 discord:

Enable Discord webhook alerts

enabled: false

Discord webhook URL for alerts

webhook-url: "" status-reports:

Enable periodic Discord status reports

enabled: false

Discord status report interval in seconds (3600 = 1 hour)

interval: 3600 slack:

Enable Slack webhook alerts

enabled: false

Slack webhook URL for alerts

webhook-url: "" ```

Log Format

The plugin logs comprehensive system metrics in the following format:

``` [2025-07-10 14:30:00] CPU: 45.67% | RAM: 2.34GB/8.00GB (29.25%) | Disk(C:): 120.5GB/500.0GB (24.10%) | Players: 45/100 (45.0%), Servers: 3/4 | JVM: Heap 67.8%, Threads: 42, GC: 1250ms ```

Timestamps - Timestamps: CPU, RAM, and disk usage with percentages - Timestamps: Current/max players, server utilization, backend server status - Timestamps: Heap utilization, active threads, total GC time - Timestamps: Configurable date/time formatting

Alert Types

The plugin can send alerts for:

- Critical System State: When CPU usage exceeds the configured threshold - Critical System State: When memory usage exceeds the configured threshold - Critical System State: When any disk exceeds the configured threshold - Critical System State: When multiple resources are under stress simultaneously

Alert Destinations

- Slack Webhooks: Alerts appear in server console with 🚨 emoji - Slack Webhooks: Alerts are saved to `alerts.log` in the logs directory - Slack Webhooks: Rich embeds with colored alerts and timestamps - Slack Webhooks: Formatted messages with appropriate warning colors

Webhook Setup

For Discord webhooks: 1. Create a webhook in your Discord server 2. Copy the webhook URL 3. Set `alerts.discord.enabled: true` and paste the URL

For Slack webhooks: 1. Create an incoming webhook in your Slack workspace 2. Copy the webhook URL 3. Set `alerts.slack.enabled: true` and paste the URL

Building

To build the plugin from source:

1. Ensure you have Java 17+ installed 2. Clone this repository 3. Run `build.bat` (Windows) or `./gradlew shadowJar` (Linux/Mac) 4. The compiled plugin will be in `build/libs/BubbleLog-1.0.0.jar`

Project Structure

``` BubbleLog/ ├── src/main/java/net/bubblecraft/bubblelog/ │ ├── BubbleLog.java # Main plugin class │ ├── config/ConfigManager.java # Configuration handling │ └── monitor/SystemMonitor.java # System monitoring logic ├── build.gradle # Build configuration ├── config-example.yml # Example configuration ├── build.bat # Windows build script └── README.md # This file ```

Dependencies

- OSHI - For system and hardware information - Configurate - For YAML configuration

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

If you encounter any issues or have questions, please open an issue on GitHub.

Error Handling & Reliability

BubbleLog is designed with comprehensive error handling to ensure it never affects server performance:

- ✅ Recovery Mechanisms: Each monitoring component fails independently - ✅ Recovery Mechanisms: Continues monitoring even if individual components fail - ✅ Recovery Mechanisms: Invalid data is replaced with safe fallback values - ✅ Recovery Mechanisms: File I/O and webhook errors don't stop monitoring - ✅ Recovery Mechanisms: All system values are validated before use - ✅ Recovery Mechanisms: Automatic recovery on next monitoring cycle

🎮 Discord Integration

BubbleLog provides rich Discord webhook integration for real-time server monitoring and alerts.

Features

- 🔧 Configurable: Rich embed alerts for CPU, RAM, and disk usage - 🔧 Configurable: Periodic comprehensive system status reports - 🔧 Configurable: Professional embeds with color-coded severity levels - 🔧 Configurable: Immediate notifications when thresholds are exceeded - 🔧 Configurable: Customizable thresholds and report intervals

Discord Alert Example

``` ⚡ High CPU Usage CPU usage is 85.23% (threshold: 80.0%)

Alert Type: High CPU Usage Severity: ⚠️ Warning Server: Velocity Proxy Timestamp: July 10, 2025 2:30 PM ```

Discord Status Report Example

``` ✅ System Status Report Current server performance metrics and health status

🖥️ CPU Usage: 45.32% 🧠 Memory Usage: 65.2% (5.2 GB / 8.0 GB) 👥 Players Online: 85 / 100 (85.0%) 💾 Disk Usage: C:: 68.5% (15.8 GB free) 🏥 Overall Health: ✅ Healthy ```

Quick Setup

1. Create a Discord webhook in your server 2. Copy the webhook URL 3. Configure BubbleLog: ```yaml alerts: discord: enabled: true webhook-url: "YOUR_WEBHOOK_URL_HERE" status-reports: enabled: true interval: 3600 # Hourly reports ```

ADS