--- name: log-analysis description: Analyze application logs to identify errors, performance issues, and security anomalies. Use when debugging issues, monitoring system health, or investigating incidents. Handles various log formats including Apache, Nginx, application logs, and JSON logs. allowed-tools: Read Grep Glob metadata: tags: logs, analysis, debugging, monitoring, grep, patterns platforms: Claude, ChatGPT, Gemini --- # Log Analysis ## When to use this skill - **Error debugging**: analyze the root cause of application errors - **Performance analysis**: analyze response times and throughput - **Security audit**: detect anomalous access patterns - **Incident response**: investigate the root cause during an outage ## Instructions ### Step 1: Locate Log Files ```bash # Common log locations /var/log/ # System logs /var/log/nginx/ # Nginx logs /var/log/apache2/ # Apache logs ./logs/ # Application logs ``` ### Step 2: Search for Error Patterns **Common error search**: ```bash # Search ERROR-level logs grep -i "error\|exception\|fail" application.log # Recent errors (last 100 lines) tail -100 application.log | grep -i error # Errors with timestamps grep -E "^\[.*ERROR" application.log ``` **HTTP error codes**: ```bash # 5xx server errors grep -E "HTTP/[0-9.]+ 5[0-9]{2}" access.log # 4xx client errors grep -E "HTTP/[0-9.]+ 4[0-9]{2}" access.log # Specific error code grep "HTTP/1.1\" 500" access.log ``` ### Step 3: Pattern Analysis **Time-based analysis**: ```bash # Error count by time window grep -i error application.log | cut -d' ' -f1,2 | sort | uniq -c | sort -rn # Logs for a specific time window grep "2025-01-05 14:" application.log ``` **IP-based analysis**: ```bash # Request count by IP awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20 # Activity for a specific IP grep "192.168.1.100" access.log ``` ### Step 4: Performance Analysis **Response time analysis**: ```bash # Extract response times from Nginx logs awk '{print $NF}' access.log | sort -n | tail -20 # Slow requests (>= 1 second) awk '$NF > 1.0 {print $0}' access.log ``` **Traffic volume analysis**: ```bash # Requests per minute awk '{print $4}' access.log | cut -d: -f1,2,3 | uniq -c # Requests per endpoint awk '{print $7}' access.log | sort | uniq -c | sort -rn | head -20 ``` ### Step 5: Security Analysis **Suspicious patterns**: ```bash # SQL injection attempts grep -iE "(union|select|insert|update|delete|drop).*--" access.log # XSS attempts grep -iE " ### Example 2: Advanced usage