Предупреждение о рисках!
Установка скиллов и плагинов 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="...")
Файл из источника