Назад | Перейти на главную страницу

Как мне проанализировать файл журнала за один час с помощью простого сценария оболочки?

Как разобрать файл журнала с помощью только сценарий оболочки за последний час?

Каждый час сценарий должен выполняться, анализировать журналы за предыдущий час, и уже предупрежденные или перечисленные ошибки не должны повторяться.

Пример журнала ошибок приведен ниже:

120622 13:06:36 mysqld_safe Starting mysqld daemon with databases from <path>
120622 13:06:36 [Note] Plugin'FEDERATED' is disabled.
120622 13:06:36  InnoDB: Initializing buffer pool, size = \78.0M
120622 13:06:36  InnoDB: Completed initialization of buffer pool
InnoDB: No valid checkpoint found.
InnoDB: If this error appears when you are creating an InnoDB database,
InnoDB: the problem may be that during an earlier attempt you managed
InnoDB: to create the InnoDB data files, but log file creation failed.
InnoDB: If that is the case, please refer to
InnoDB: http:<path>error-creating-innodb.html
120622 13:06:36 [ERROR] Plugin 'InnoDB' init function returned error.
120622 13:06:36 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
120622 13:06:36 [Note] Event Scheduler: Loaded 0 events
120622 13:06:36 [Note] <path>mysqld: ready for connections.

Я хочу предупредить только строку ERROR d.

Проверять, выписываться logtail. Это инструмент для чтения строк в журналах, которые не были прочитаны.

http://manpages.ubuntu.com/manpages/hardy/man8/logtail2.8.html

Напишите такой скрипт и вызывайте его из cron каждый час:

#!/bin/bash

logfile=/var/lib/mysql/error.log
oldlogfile=/var/lib/mysql/error.log.old
email=your@mail.box.here

if [ -f $oldlogfile ]; then
  diff $oldlogfile $logfile | grep ERROR > /dev/null
  if [ $? -eq 0 ]; then
    diff $oldlogfile $logfile | grep ERROR | mail -s 'last hour mysql errors' $email
  fi
fi
cp -p $logfile $oldlogfile