Скиллы Новичок Разное

Log Analyzer

Скачать ZIP
13
Предупреждение о рисках!

Установка скиллов и плагинов OpenClaw осуществляется на ваш страх и риск. Все файлы были получены из открытых источников и предоставляются «как есть». Мы не гарантируем их корректную работу, безопасность или совместимость с вашей системой. Перед установкой настоятельно рекомендуется ознакомиться с содержимым кода и убедиться, что вы понимаете, какие изменения будут внесены в вашу систему.

Log Analyzer — инструмент для парсинга, поиска и отладки на основе логов приложений. Поддерживает текстовые логи, структурированные JSON-логи, стек-трейсы, корреляцию между сервисами и мониторинг в реальном времени.

Когда использовать

  • Отладка ошибок приложений по логам
  • Поиск конкретных паттернов, ошибок или request ID
  • Анализ стек-трейсов
  • Настройка структурированного логирования (JSON)
  • Корреляция событий между несколькими сервисами
  • Мониторинг логов в реальном времени
  • Формирование отчетов по частоте ошибок

Быстрый поиск по логам

# Все ошибки в файле
grep -i 'error\|exception\|fatal\|panic\|fail' app.log

# Ошибки с контекстом (3 строки)
grep -i -C 3 'error\|exception' app.log

# Ошибки за последний час
HOUR_AGO=$(date -u -d '1 hour ago' '+%Y-%m-%dT%H:%M' 2>/dev/null || date -u -v-1H '+%Y-%m-%dT%H:%M')
awk -v t="$HOUR_AGO" '$0 ~ /^[0-9]{4}-/ && $1 >= t' app.log | grep -i 'error'

# Подсчет ошибок по типу
grep -oP '(?:Error|Exception): \K[^\n]+' app.log | sort | uniq -c | sort -rn | head -20

Поиск по request ID

# Один файл
grep 'req-abc123' app.log

# Несколько файлов
grep -r 'req-abc123' /var/log/myapp/

# Несколько сервисов
grep -rH 'correlation-id-xyz' /var/log/service-a/ /var/log/service-b/

Фильтрация по времени

# В заданном диапазоне
awk '$0 >= "2026-02-03T10:00" && $0 <= "2026-02-03T11:00"' app.log

# Последние строки
tail -1000 app.log | grep -i error

JSON и структурированные логи

# Красивый вывод
cat app.log | jq '.'

# Только ошибки
cat app.log | jq 'select(.level == "error")'

# Извлечение полей
cat app.log | jq -r '[.timestamp, .level, .message] | @tsv'

# Подсчет по уровням
cat app.log | jq -r '.level' | sort | uniq -c | sort -rn

Анализ стек-трейсов

# Java / Kotlin
awk '/Exception|Error/{trace=$0; while(getline && /^\t/) trace=trace"\n"$0; print trace"\n---"}' app.log

# Python
awk '/^Traceback/{p=1} p{print} /^[A-Za-z].*Error/{if(p) print "---"; p=0}' app.log

# Node.js
awk '/Error:/{trace=$0; while(getline && /^ at /) trace=trace"\n"$0; print trace"\n---"}' app.log

Мониторинг в реальном времени

# Следить за логом и подсвечивать ошибки
tail -f app.log | grep --color=always -i 'error\|warn\|$'

# Только ошибки
tail -f app.log | grep --line-buffered -i 'error\|exception'

# Несколько файлов
tail -f /var/log/service-a/app.log /var/log/service-b/app.log

Анализ access-логов

# Топ IP
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20

# Топ URL
awk '{print $7}' access.log | sort | uniq -c | sort -rn | head -20

# Ошибки 4xx/5xx
awk '$9 >= 400 {print $9, $7}' access.log | sort | uniq -c | sort -rn

Структурированное логирование

Node.js (pino)

const pino = require('pino');
const logger = pino({ level: 'info' });

logger.info({ userId: 'u123' }, 'User logged in');
logger.error({ err }, 'Request failed');

Python (structlog)

import structlog
logger = structlog.get_logger()

logger.info("user_login", user_id="u123")
logger.error("request_failed", error="...")

Файл из источника

11125_log-analyzer-1.0.0.zip