Категории

log_analyzer.sh - анализ системных логов

30.11.2025 19:27 | коды из категории: IOT умный дом

про log_analyzer.sh - анализ системных логов

Анализ системных логов с помощью log_analyzer.sh

Системные логи — богатый источник информации о здоровье устройства, но в сыром виде они бесполезны. Чтобы быстро замечать проблемы, я создал скрипт log_analyzer.sh, который ежечасно парсит журнал systemd (journalctl) и считает, сколько раз за день встретились ключевые слова вроде error, failed или warning.

Результаты сохраняются в базу данных и отображаются в веб-панели — так я вижу, например, «5 ошибок и 12 предупреждений сегодня», не лезя в терминал.

Как это работает:

  1. Скрипт запускается раз в час (или по расписанию),
  2. Читает все записи journalctl --since today,
  3. Для каждого ключевого слова считает количество совпадений (регистронезависимо),
  4. Очищает старые записи за текущий день и вставляет обновлённые счётчики в таблицу log_stats.

Ключевые слова по умолчанию:

При желании список легко расширить — достаточно добавить слово в массив KEYWORDS.

Полный код скрипта:

#!/bin/bash

# Вместо файла — используем journalctl
MYSQL_USER="iot_user"
MYSQL_PASS="123456"
MYSQL_DB="iot_db"
DATE=$(date '+%Y-%m-%d')

KEYWORDS=("error" "failed" "denied" "warning" "reboot")

# Очищаем данные за сегодня
mysql -u "$MYSQL_USER" -p"$MYSQL_PASS" "$MYSQL_DB" -e "DELETE FROM log_stats WHERE date = '$DATE';"

# Получаем все логи за сегодня в переменную (для многократного использования)
LOGS_TODAY=$(journalctl --since today --no-pager)

# Перебираем ключевые слова
for KEYWORD in "${KEYWORDS[@]}"; do
    # Ищем в выводе journalctl (игнорируем регистр)
    COUNT=$(echo "$LOGS_TODAY" | grep -i "$KEYWORD" | wc -l)
    
    # Вставляем в БД
    mysql -u "$MYSQL_USER" -p"$MYSQL_PASS" "$MYSQL_DB" -e "
    INSERT INTO log_stats (keyword, count, date) VALUES ('$KEYWORD', $COUNT, '$DATE');
    "
done

💡 Совет: Добавьте в cron для ежечасного запуска: 0 * * * * /opt/iot/log_analyzer.sh

Теперь вы всегда в курсе, «шумит» ли ваша система — без ручного grep’а и прокрутки терминала.

Теги: #linux #cron #bash-скрипт #системный_мониторинг

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку

Важно: Блог-эксперимент

Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.

Посетителей сегодня: 0


кто я | книга | контакты без контактов

© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA