Анализатор Файлов Логов

Продвинутый скрипт анализа логов, который анализирует системные логи и сообщает об ошибках, предупреждениях и важных событиях.

Опубликовано: 05.03.2024

Код

#!/bin/bash

# Log File Analyzer

LOG_FILE="${1:-/var/log/syslog}"
OUTPUT_FILE="log_report_$(date +%Y%m%d_%H%M%S).txt"

echo "Analyzing log file: $LOG_FILE"
echo ""

if [ ! -f "$LOG_FILE" ]; then
    echo "Error: Log file not found!"
    exit 1
fi

{
    echo "======================================"
    echo "   LOG ANALYSIS REPORT"
    echo "======================================"
    echo "Log File: $LOG_FILE"
    echo "Analysis Date: $(date)"
    echo "Report Generated By: $(whoami)@$(hostname)"
    echo ""
    
    echo "--- SUMMARY ---"
    echo "Total Lines: $(wc -l < "$LOG_FILE")"
    echo "File Size: $(du -h "$LOG_FILE" | cut -f1)"
    echo ""
    
    echo "--- ERROR COUNT ---"
    ERROR_COUNT=$(grep -i "error" "$LOG_FILE" | wc -l)
    echo "Errors: $ERROR_COUNT"
    WARN_COUNT=$(grep -i "warn" "$LOG_FILE" | wc -l)
    echo "Warnings: $WARN_COUNT"
    CRIT_COUNT=$(grep -i "critical" "$LOG_FILE" | wc -l)
    echo "Critical: $CRIT_COUNT"
    echo ""
    
    echo "--- RECENT ERRORS (Last 20) ---"
    grep -i "error" "$LOG_FILE" | tail -n 20
    echo ""
    
    echo "--- TOP ERROR MESSAGES ---"
    grep -i "error" "$LOG_FILE" | cut -d: -f4- | sort | uniq -c | sort -rn | head -n 10
    echo ""
    
    echo "--- AUTHENTICATION FAILURES ---"
    grep -i "failed password" "$LOG_FILE" | tail -n 10
    echo ""
    
    echo "--- SUDO USAGE ---"
    grep -i "sudo" "$LOG_FILE" | tail -n 10
    echo ""
    
    echo "--- SERVICE RESTARTS ---"
    grep -i "start\|stop\|restart" "$LOG_FILE" | tail -n 10
    echo ""
    
    echo "--- TOP IP ADDRESSES ---"
    grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" "$LOG_FILE" | sort | uniq -c | sort -rn | head -n 10
    echo ""
    
    echo "======================================"
    echo "Report completed: $(date)"
    echo "======================================"
    
} | tee "$OUTPUT_FILE"

echo ""
echo "✓ Report saved to: $OUTPUT_FILE"

Использование

chmod +x log_analyzer.sh

# Analyze default syslog
./log_analyzer.sh

# Specific log file
./log_analyzer.sh /var/log/apache2/error.log

# Nginx error log
./log_analyzer.sh /var/log/nginx/error.log

Теги

log analysis syslog error detection log monitoring