RTX 3050 - Order Now
Home / Blog / AI Hosting & Infrastructure / Log Management for GPU Servers
AI Hosting & Infrastructure

Log Management for GPU Servers

Manage logs on GPU inference servers effectively. Covers journald configuration, log rotation for vLLM and Ollama, structured logging, disk usage prevention, and centralized log aggregation for AI workloads.

Inference Logs Filled Your Disk and Killed the Server

A busy inference API generates gigabytes of logs per day. Each request logs prompt tokens, generation parameters, and timing data. Without rotation, those logs consume the same NVMe storage your models need, eventually filling the disk and crashing the inference process. A dedicated GPU server running AI workloads needs log management that captures useful diagnostics without eating storage alive.

Configure journald for GPU Workloads

Systemd services log through journald by default. Set sane limits before logs spiral:

# /etc/systemd/journald.conf
[Journal]
SystemMaxUse=2G
SystemMaxFileSize=200M
SystemKeepFree=10G
MaxRetentionSec=2week
Compress=yes
RateLimitIntervalSec=30s
RateLimitBurst=10000

# Apply changes
sudo systemctl restart systemd-journald

# Verify current disk usage
journalctl --disk-usage

# Manually trim if already oversized
sudo journalctl --vacuum-size=2G
sudo journalctl --vacuum-time=2weeks

Log Rotation for Inference Services

vLLM, Ollama, and custom inference scripts often write their own log files:

# /etc/logrotate.d/ai-inference
/var/log/vllm/*.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    maxsize 500M
    postrotate
        systemctl reload vllm-inference 2>/dev/null || true
    endscript
}

/var/log/ollama/*.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    maxsize 500M
}

# Custom inference API logs
/opt/inference/logs/*.log {
    daily
    rotate 14
    compress
    delaycompress
    missingok
    notifempty
    maxsize 200M
    create 0640 www-data www-data
}

# Force rotation test
sudo logrotate -d /etc/logrotate.d/ai-inference
sudo logrotate -f /etc/logrotate.d/ai-inference

Structured Logging for AI APIs

Plain text logs are hard to search. Structured JSON logging makes analysis possible:

# Python structured logging for inference APIs
import logging
import json
from datetime import datetime

class InferenceFormatter(logging.Formatter):
    def format(self, record):
        log_entry = {
            "timestamp": datetime.utcnow().isoformat(),
            "level": record.levelname,
            "message": record.getMessage(),
            "module": record.module,
        }
        # Add inference-specific fields if present
        if hasattr(record, "model"):
            log_entry["model"] = record.model
        if hasattr(record, "tokens_generated"):
            log_entry["tokens_generated"] = record.tokens_generated
        if hasattr(record, "latency_ms"):
            log_entry["latency_ms"] = record.latency_ms
        if hasattr(record, "gpu_mem_mb"):
            log_entry["gpu_mem_mb"] = record.gpu_mem_mb
        return json.dumps(log_entry)

# Configure
handler = logging.FileHandler("/var/log/inference/api.jsonl")
handler.setFormatter(InferenceFormatter())
logger = logging.getLogger("inference")
logger.addHandler(handler)
logger.setLevel(logging.INFO)

# Usage in request handler
logger.info("Request completed",
    extra={
        "model": "meta-llama/Llama-3-70B",
        "tokens_generated": 256,
        "latency_ms": 1430,
        "gpu_mem_mb": 38400
    }
)

NVIDIA and GPU-Specific Logs

GPU driver and CUDA logs live in specific locations:

# NVIDIA kernel driver logs
dmesg | grep -i nvidia | tail -20
journalctl -k | grep -i nvrm

# Xid errors (GPU hardware/software faults)
dmesg | grep -i "xid"
# Xid 79 = GPU fallen off bus
# Xid 31 = GPU memory page retirement
# Xid 48 = Double-bit ECC error

# nvidia-smi event log
nvidia-smi -q -d ECC | grep -A 5 "Aggregate"

# Monitor GPU events continuously
nvidia-smi daemon --loop=10 --filename=/var/log/nvidia-smi.log &

# CUDA error logs for debugging
export CUDA_LAUNCH_BLOCKING=1
export CUDA_VISIBLE_DEVICES=0
export NCCL_DEBUG=INFO
export NCCL_DEBUG_FILE=/var/log/nccl-debug.log

Prevent Log-Driven Disk Failures

# Monitor disk usage and alert before logs fill storage
cat <<'EOF' > /opt/scripts/check-log-disk.sh
#!/bin/bash
THRESHOLD=85
USAGE=$(df /var/log --output=pcent | tail -1 | tr -d ' %')

if [ "$USAGE" -gt "$THRESHOLD" ]; then
    echo "WARNING: /var/log at ${USAGE}% capacity" | \
        logger -p user.warning -t "disk-check"

    # Emergency rotation
    logrotate -f /etc/logrotate.d/ai-inference
    journalctl --vacuum-size=1G

    echo "Emergency log rotation triggered at ${USAGE}%"
fi
EOF
chmod +x /opt/scripts/check-log-disk.sh

# Run every 15 minutes
echo "*/15 * * * * root /opt/scripts/check-log-disk.sh" >> /etc/crontab

# Quick check: biggest log consumers
du -sh /var/log/* 2>/dev/null | sort -rh | head -10

Proper log management keeps your GPU server storage healthy while preserving the diagnostics you need for debugging inference issues. For vLLM logging specifics, see the production deployment guide. Monitor Ollama logs alongside GPU usage metrics. Browse our infrastructure guides, tutorials, and benchmarks for related setup.

High-Performance GPU Servers

GigaGPU dedicated servers with NVMe storage and full root access. Run AI workloads with the control to manage every log and metric.

Browse GPU Servers

Need a Dedicated GPU Server?

Deploy from RTX 3050 to RTX 5090. Full root access, NVMe storage, 1Gbps — UK datacenter.

Browse GPU Servers

gigagpu

We benchmark, deploy, and optimise GPU infrastructure for AI workloads. All data in our guides comes from real-world testing on our UK-based dedicated GPU servers.

Ready to deploy your AI workload?

Dedicated GPU servers from our UK datacenter. NVMe storage, 1Gbps networking, full root access.

Browse GPU Servers Contact Sales

Have a question? Need help?