Linux просмотр реального времени

Записки IT специалиста

Админу на заметку — 26. Как просматривать лог-файл в режиме реального времени в Windows и Linux

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

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Linux

В Linux подавляющее большинство логов являются обычным текстом, что делает работу с ними возможной при помощи широкого спектра утилит. Одна из них — это tail (англ. хвост), по умолчанию она выводит 10 последних строк указанного текстового файла. А еще она умеет выводить на экран последние строки по мере их добавления. Это как раз то, что нам нужно. Допустим мы хотим видеть в реальном времени лог доступа к сайту:

tail -f /var/log/apache2/access.log

После чего вы сразу увидите на экране 10 последних строк лог-файла и все добавляемые позже в режиме реального времени.

logfile-tail-001.png

Это удобно, теперь мы можем в одном окне выполнять какие-либо действия, а во втором сразу видеть реакцию на них.

Начинающим администраторам достаточно часто приходится обращаться за помощью к коллегам или на форумы и первое что от них попросят — это логи. Но взять и отправить файл лога целиком — это очень плохая идея, вряд ли кто-то захочет разбираться в чужих логах, да и вы тем самым покажете свое неуважение к тем, кто хотел бы вам помочь. Отправить случайный участок лога, в надежде что кто-то в нем разберется? Тоже нехорошо.

Читайте также:  Building linux kernel headers

А тем временем сделать правильно очень просто. Достаточно использовать приведенную выше команду и направить ее вывод в файл:

tail -f /var/log/apache2/access.log > ~/my_log.log

На экране теперь строки лога появляться не будут, они будут записаны в файл my_log.log в домашней директории. После чего выполните с системой необходимые действия, результат которых должен попасть в лог, прервите действие команды по Ctrl+C и можете смело описывать проблему коллегам, не забыв приложить полученный файл.

Также вы можете использовать другие утилиты для обработки результатов вывода, допустим вам нужно убрать из лога сообщения, относящиеся к другим узлам сети и оставить только собственные. Так как в нашем логе фиксируется IP источника можно очень просто отфильтровать записи:

tail -f /var/log/apache2/access.log | grep 192.168.16.187 > ~/my_log.log

Здесь мы перенаправили выходной поток от tail на вход команды grep, которая выберет только те строки, в которых присутствует искомый адрес. Подобную конструкцию можно использовать и при интерактивном выводе на экран.

А если мы хотим одновременно видеть лог на экране и при этом записывать его в файл? Все просто, вместо перенаправления вывода передадим результат по конвейеру еще одной команде:

tail -f /var/log/apache2/access.log | grep 192.168.16.187 | tee ~/my_log.log

Здесь мы использовали команду tee (тройник), которая одновременно выводит переданный ей стандартный поток ввода на экран и записывает в указанный файл.

Windows

Системные логи Windows хранятся в Журналах событий, которые имеют специализированный формат и хранятся в файлах .evt и .evtx, которые просмотреть подобным образом не удастся, но логи многих системных служб и приложений используют простой текстовый формат, а следовательно дают возможность работать с ними интерактивно.

В качестве аналога команды tail используем один из командлетов PowerShell:

Get-Content C:\OpenVPN\log\openvpn.log -Wait

Данная команда выведет на экран весь лог и продолжит отображать новые строки. Если лог большой, то это может быть неудобно, поэтому добавим в команду еще один параметр, в котором укажем какое количество последних строк мы хотим видеть, допустим пять:

Get-Content C:\OpenVPN\log\openvpn.log -Wait -Tail 5

logfile-tail-002.png

Точно также мы можем перенаправить вывод команды в файл:

Get-Content C:\OpenVPN\log\openvpn.log -Wait -Tail 5 > S:\my_log.log

Или выполнить отбор по интересующему нас вхождению используя возможности РowerShell, например отберем только события AUTH_FAILED, включив в отбор также последние сто строк лога:

Get-Content C:\OpenVPN\log\openvpn.log -Wait -Tail 100 | where

logfile-tail-003.png

Точно также, как и в Linux мы можем одновременно просматривать и записывать логи, для этого используем аналогичную команду Tee-Object:

Get-Content C:\OpenVPN\log\openvpn.log -Wait -Tail 100 | where < $_ -match "AUTH_FAILED">| Tee-Object -FilePath S:\my_log.log

В данной заметке мы не претендовали на всестороннее освещение затронутой темы, а всего лишь хотели напомнить о существовании удобных инструментов для интерактивной работы с текстовыми логами. Надеемся данный материал окажется вам полезен.

Читайте также:  Del file in linux

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Подпишись на наш Telegram-канал

Или подпишись на наш Телеграм-канал:

Источник

Linux просмотр реального времени

Фото Григорьева Ивана

👋

Добро пожаловать! Меня зовут Григорьев Иван, я Full Stack Developer. В основном пишу на PHP (Nette, Laravel), Python (Django, DRF), Vue (Quasar Framework). Опыт профессиональной разработки более 10 лет.

💼

Работаю в компании MACRO разработчиком. В свободное время оказываю консультации по разработке ПО.

✏ Пишу о:

Просмотр логов в реальном времени на Linux

image from Просмотр логов в реальном времени на Linux

Некоторые приложения сохраняют информацию о своем состоянии или исторические данные процесса выполнения в лог-файлах. Возникает необходимость просмотреть изменениия лог файла или файлов в реальном времени. Это могут быть запросы к веб-серверу NGINX или результат работы утилиты curl при скачивании большого количества данных.

Например, я переодически люблю поглядывать как работают мои боты для Telegram, у которых нет внешней базы для хранения статистики.

Утилита tail

Утилита которую я использую для просмотра логов в реальном времени, довольно популярна, но новички в Linux могут о ней не знать. Это утилита tail . Переводится название с английского как хвост, что полностью отражает суть утилиты.

По умолчанию, tail просто выводит 10 последних строк файла:

tail /var/log/nginx/access.log 
5.101.0.209 - - [17/Apr/2020:11:24:48 +0000] "GET /solr/admin/info/system?wt=json HTTP/1.1" 404 209 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36" 5.101.0.209 - - [17/Apr/2020:11:30:02 +0000] "GET /?a=fetch&content=die(@md5(HelloThinkCMF)) HTTP/1.1" 200 396 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36" 5.101.0.209 - - [17/Apr/2020:11:30:03 +0000] "GET /?XDEBUG_SESSION_START=phpstorm HTTP/1.1" 200 396 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36" 5.101.0.209 - - [17/Apr/2020:11:36:26 +0000] "GET /index.php?s=/Index/\x5Cthink\x5Capp/invokefunction&function=call_user_func_array&vars[0]=md5&vars[1][]=HelloThinkPHP HTTP/1.1" 404 209 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36" 192.241.239.88 - - [17/Apr/2020:11:54:02 +0000] "GET /hudson HTTP/1.1" 404 152 "-" "Mozilla/5.0 zgrab/0.x" . 

В результате примера, кстати, видно что веб-сервер сканируют боты поиска уязвимостей. Такие боты в автоматическом режиме сканируют сервера в сети интернет, находят сервера с уязвимым ПО (это может быть система управления сайтом или панель управления сервером) и эксплуатируют уязвимость. Потом такой сервер становится частью ботнета или же с него выполняются незаконные действия. Так что мой совет: не используйте никогда устаревшее ПО, следите за регулярными обновлениями.

Параметры утилиты tail

Изменить количество выводимых строк можно параметром -n или просто указав количество числовым параметром, например -2 :

tail -2 /var/log/nginx/access.log 

В результате отобразится две последних строки лог-файла.

Читайте также:  Adding new user on linux

А вот для отслеживания изменений необходим параметр -f :

tail -f /var/log/nginx/access.log 

Можно также комбинировать команды, например выводить только две последних строки файла при изменении лог-файла:

tail -f -2 /var/log/nginx/access.log 

Что бы остановить выполнение утилиты и выйти из просмотра файла, нажмите Ctrl + C .

Рад был поделиться информацией с вами, а вы в свою очередь делитесь моей заметкой в социальных сетях и отправляйте друзьям и коллегам.

Источник

Оцените статью
Adblock
detector