Екатерина
12.06.2019
181

Мониторинг изменений конфигурационных файлов fswatch

В данной статье рассмотрим возможность мониторинга изменений в конфигурационных файлах. Использовать для этого будем утилиту fstab. Данный функционал может потребоваться, если одну АТС обслуживает несколько человек или компаний, это позволит избежать путаницы, если кто либо вносит правки в файлы. Для установки утилиты последней версии (на момент написания это – 1.14.0) необходим GCC 4.9 + версии. […]

В данной статье рассмотрим возможность мониторинга изменений в конфигурационных файлах. Использовать для этого будем утилиту fstab. Данный функционал может потребоваться, если одну АТС обслуживает несколько человек или компаний, это позволит избежать путаницы, если кто либо вносит правки в файлы.

Для установки утилиты последней версии (на момент написания это – 1.14.0) необходим GCC 4.9 + версии.

На CentOs 7 его можно установить из репозиториев, однако в данной статье я использовал CentOs 6, поэтому его необходимо установить вручную.
Yum install libmpc-devel mpfr-devel gmp-devel
cd /usr/src/
curl ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-4.9.3/gcc-4.9.3.tar.bz2 -O
tar xvfj gcc-4.9.3.tar.bz2
cd gcc-4.9.3
./configure --disable-multilib --enable-languages=c,c++
make -j `grep processor /proc/cpuinfo | wc –l`
make install

После установки GCC устанавливаем сам fswatch:

wget https://github.com/emcrisostomo/fswatch/releases/download/1.14.0/fswatch-1.14.0.tar.gz
tar –xvzf fswatch-1.14.0.tar.gz 
cd fswatch-1.14.0
./configure
make
sudo make install 

Утилита fswatch позволяет отслеживать доступ и изменение файлов или директорий в реальном времени. Также позволяет выполнять команды консоли при появлении каких либо событий. Ниже рассмотрим вариант запуска мониторинга файла /etc/asterisk/extensions_custom.conf с выводом изменений в файл. Выводить будем события обновления файла:

fswatch –l 1 –t –x –event Updated /etc/asterisk/extensions_custom.conf >> /tmp/log_fs.log
Вывод в консоль и в файл

Данную команду можно запустить в screen, а затем проверять содержимое файла, однако сейчас не пишется IP адрес и пользователь, которые проводили изменения. Чтобы отследить этот момент можно использовать команду last и по времени найти необходимого пользователя.

Вывод команды last

Полученные записи в файле можно как просматривать через утилиты командной строки, так и использовать в дальнейшем построении статистики изменений файлов. Рассмотрим это позже. Более подробно параметры утилиты, можно посмотреть с помощью fswatch –h, или man fswatch.

Inotifywatch

Следующая утилита мониторинга – Inotifywatch, обладает немного более расширенным функционалом. Для начала установим необходимые пакеты.

Yum install inotify-tools

Данная утилита также собирает статистику доступа к файловой системе с помощью монитора inotify. По окончанию работы – выводит информацию об общем количестве событий и количестве событий каждого типа и фалы, для которых произошли эти события.

Сбор статистики по файлу за 300 секунд
Данная утилита не выводит информацию в реальном времени, только по завершению, либо с помощью CTRL+C, либо по таймауту через параметр –t

Для отображения событий в реальном времени, можно использовать другую утилиту.

Inotifywait

В отличие от предыдущей, ждет возникновения события и сразу же выводит его на экран. Эту утилиту можно использовать аналогично fswatch, тоесть записывать события в файл в реальном времени, но в отличие от fswatch, в этой утилите есть параметр для записи событий в файл.

Вывод в файл

Это простой вывод в файл событий, без дополнительных опций, нам же необходимо вывести нужную информацию, для этого используем следующие параметры:

-format – определяет формат вывода событий, в данном примере будет выглядеть так: “%T – %w – %e”

-timefmt (работает только при использовании format %T) – указываем формат вывода даты, по аналогии с обычным выводом даты bash: “%Y-%m-%d %H:%I:%s”

И организуем вывод этой информации в файл:

inotifywait -m /etc/asterisk/extensions_custom.conf --format "%T - %w - %e"  --timefmt "%Y-%m-%d %H:%I:%s" >> /tmp/log_in.log
Вывод в файл

Аналогично можем организовать для других файлов. В дальнейшем будет рассмотрено расширение функционала мониторинга, на основе этих утилит.

 
avatar
  Подписаться  
Уведомление о

Остались вопросы?

Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices