Поиск по логам linux

Содержание
  1. Просмотр и анализ логов сайта на Linux сервере
  2. Важные логи сайта
  3. Расположение логов
  4. Стандартные пути до Error.log
  5. Nginx
  6. Php-Fpm
  7. Apache (CentOS)
  8. Apache (Ubuntu, Debian)
  9. Стандартные пути до Access.log
  10. Nginx
  11. Php-Fpm
  12. Apache (CentOS)
  13. Apache (Ubuntu, Debian)
  14. Чтение записей в логах
  15. Примеры записей
  16. Error.log
  17. Access.log
  18. Просмотр логов сервера с помощью команды tail
  19. Первый вариант использования Tail
  20. Второй вариант использования Tail
  21. Аналог команды Tail
  22. Изменение стандартного количества строк для вывода
  23. Просмотр логов с помощью ISPManager
  24. Программы для анализа логов
  25. Статические программы
  26. WebLog Expert
  27. Web Log Explorer
  28. Программы для анализа в режиме реального времени
  29. GoAccess
  30. Logstash
  31. Ведения логов медленных запросов сервера
  32. MySQL
  33. PHP-FPM
  34. Анализ логов медленных запросов
  35. Ведение логов в Logrotate
  36. Логи в Linux. Как найти и прочитать?
  37. Как посмотреть логи в Linux?
  38. Основные логи
  39. Ротация лог-файлов
  40. systemd и journald
  41. Приоритет сообщений в лог-файлах
  42. Заключение

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

Содержание:

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

Важные логи сайта

  • Access.log — логи посещений пользователей и ботов. Позволяет составить более точную и подробную статистику, нежели сторонние ресурсы, выполняющие внешнее сканирование сайта и отправляющие ряд ненужных запросов серверу. Благодаря данному логу можно получить информацию об используемом браузере и IP-адрес посетителя, данные о местонахождении клиента (страна и город) и многое другое. Стоит обратить внимание, если сайт имеет высокую посещаемость, то анализ логов сервера потребует больше времени. Поэтому для составления статистики стоит использовать специализированные программы (анализаторы).
  • Error.log — программные ошибки сервера. Стоит внимательно отнестись к анализу данного лога, ведь боты поисковиков, сканируя, получают все данные о работе сайта. При обнаружении большого количества ошибок, сайт может попасть под санкции поисковых систем. В свою очередь из записей данного журнала можно узнать точную дату и время ошибки, IP-адрес получателя, тип и описание ошибки.
  • Slow.log (название зависит от используемой оболочки сервера) — в данный журнал записываются медленные запросы сервера. Так принято обозначать запросы с повышенным порогом задержки, выданные пользователю. Этот журнал позволяет выявить слабые места сервера и исправить проблему. Ниже будет рассмотрен способ включить ведение данного лога на разных типах серверов, а также настройка задержки, с которой записи будут заноситься в файл.

Расположение логов

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

Стандартные пути до Error.log

Nginx

Php-Fpm

Apache (CentOS)

Apache (Ubuntu, Debian)

Стандартные пути до Access.log

Nginx

Php-Fpm

Apache (CentOS)

Apache (Ubuntu, Debian)

Чтение записей в логах

Записи в логах имеют структуру: одно событие – одна строка .

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

Примеры записей

Error.log

В приведенном примере:

  • [Sat Sep 1 15:33:40.719615 2019] — дата и время события.
  • [:error] [pid 10706] — ошибка и её тип.
  • [client 66.249.66.61:60699] — IP-адрес подключившегося клиента.
  • PHP Notice: Undefined variable: moduleclass_sfx in — событие PHP Notice. В данной ситуации — обнаружена неизвестная переменная.
  • /var/data/www/site.ru/modules/contacts/default.php on line 14 — путь и номер строки в проблемном файле.

Access.log

В приведенном примере:

  • 194.61.0.6 — IP-адрес пользователя.
  • alex — если пользователь зарегистрирован в системе, то в логах будет указан идентификатор.
  • [10/Oct/2019:15:32:22 -0700]— дата и время записи.
  • «GET /apache_pb.gif HTTP/1.0» — «GET» означает, что определённый документ со страницы сайта был отправлен пользователю. Существует команда «POST», наоборот отправляет конкретные данные (комментарий или любое другое сообщение) на сервер . Далее указан извлечённый документ «Apache_pb.gif», а также использованный протокол «HTTP/1.0».
  • 200 5396 — код и количество байтов документа, которые были возвращены сервером.
  • «http://www. www.mysite/myserver.html»— страница, с которой был произведён запрос на извлечение документа «Apache_pb.gif».
  • «Mozilla/4.08 [en] (Win98; I ;Nav)» — данные о пользователе, которой произвёл запрос (используемый браузер и операционная система).

Просмотр логов сервера с помощью команды tail

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

Первый вариант использования Tail

Аргумент «-f» позволяет команде делать просмотр событий в режиме реального времени, в ожидании новых записей в лог файлах. Для прерывания процесса следует нажать сочетание клавиш «Ctrl+C».

На место переменной «/var/log/syslog» в примере следует подставить актуальный адрес до нужных системных журналов.

Второй вариант использования Tail

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

Читайте также:  14550 microsoft windows dfssvc

Если будет использоваться аргумент «-f», команда продолжит отслеживание старого, переименованного журнала. Данный метод делает невозможным просмотр логов в реальном времени, поскольку файл более не актуален.

При использовании аргумента «-F», команда, после окончания записи старого журнала, перейдёт к чтению нового файла с логами. В таком случае просмотр логов в режиме реального времени продолжится.

Аналог команды Tail

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

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

Изменение стандартного количества строк для вывода

Как и отмечалось выше, по умолчанию выводится 10 строк. Если требуется увеличить или уменьшить их количество, в команду добавляется аргумент «-n» и необходимое число строк.

При использовании данной команды будут показаны последние 100 строк журнала.

Просмотр логов с помощью ISPManager

Если на сервере установлен ISPManager, логи можно легко читать, используя приведенный ниже алгоритм.

  1. На главной странице, в панели инструментов «WWW» нужно нажать на вкладку «Журналы».
  2. ISPManager выдаст журналы посещений и серверных ошибок в виде:
    • ru.access.log;
    • ru.error.log.*

* Вместо «newdomen.ru» из примера в выдаче будет название актуального домена.

Открыть файл лога можно, нажав на «Посмотреть» в верхнем меню.

  • Для просмотра всех записей журнала, необходимо нажать на «Скачать» и сохранить файл на локальный носитель.
  • Более старые версии логов можно найти во вкладке «Архив».
  • Программы для анализа логов

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

    Инструменты для анализа логов делятся на два основных типа — статические и работающие в режиме реального времени.

    Статические программы

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

    WebLog Expert

    Возможности
    • Предоставление информации об активность сайта, количестве посетителей, доступ к файлам, URL страницы, ссылающиеся страницы, информацию о пользователе (браузер и операционная система).
    • Создание отчётов в формате HTML (.html), PDF (.pdf), CSV (.csv).
    • Поддерживает анализ логов Nginx, Apache, ISS.
    • Чтение файлов даже в архивах ZIP (.zip), GZ (.gz).

    Web Log Explorer

    Возможности
    • Создание многоуровневых отчётов, включающих количество посетителей, маршруты пользователей по сайту, местоположение хостов (страна и город), указанные в поисковике ключевые слова.
    • Поддержка более 43 форматов логов.
    • Возможность прямой загрузки логов с FTP, HTTP сервера.
    • Чтение архивированных журналов.

    Программы для анализа в режиме реального времени

    Эти инструменты встраиваются в программную среду сервера, анализируют данные в реальном времени и записывают непрерывный отчёт.

    GoAccess

    Возможности
    • Автоматическая генерация отчёта в формате HTML (.html), JSON (.json), CSV (.csv).
    • При подключении к серверу через SSH, возможен анализ в браузере и в терминале
    • Поддержка почти всех форматов (Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront и др.).

    Logstash

    Возможности
    • Постоянная генерация отчёта в файл JSON (.json).
    • Получение и анализ информации из нескольких источников.
    • Возможность пересылать журналы с помощью Filebeat.
    • Поддержка анализа системных журналов.
    • Поддерживается большое количество форматов: от Apache до Log4j (Java).

    Ведения логов медленных запросов сервера

    Анализ данного лога позволяет определить на какие типы запросов сервер отвечает долго. В идеале задержка должна составлять не более 1 секунды.

    На некоторых типах оболочек (MySQL, PHP-FPM) ведение данного лога по умолчанию отключено. Процесс запуска и ведения зависит от сервера.

    MySQL

    Если сервер управляется с помощью MySQL, то необходимо создать каталог и сам файл для ведения журнала с помощью команд:

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

    После выполнения предыдущих действий, нужно совершить вход в командную строку MySQL под учётной записью суперпользователя:

    Для запуска и настройки ведения логов нужно последовательно ввести в терминале следующие команды:

    • slow_query_log — запускает ведение журналов медленных запросов.
    • slow_launch_time — указывает максимальную задержку отклика, после которой статистика запроса попадёт в журнал. В данном случае запись в логи происходит при преодолении откликом порога 2 секунды.
    • slow_query_log_file — задаёт путь до используемого журнала.

    Проверить статус и параметры ведения лога медленных запросов можно командой:

    Выход из консоли MySQL выполняется командой:

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

    PHP-FPM

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

    Далее нужно найти строки:

    • request_slowlog_timeout = 10s — параметр, позволяющий указать задержку, с которой запись о длительном запросе попадёт в журнал.
    • slowlog = /var/log/php-fpm/www-slow.log — параметр, указывающий путь до актуального файла логирования (.log).

    После применения изменений, необходимо перезагрузить сервер PHP-FPM. Для этого в консоль вводится команда:

    Просмотр логов запускается командой:

    Анализ логов медленных запросов

    Логи медленных запросов могут за незначительное время вырасти до огромных размеров. Для сортировки и отображения повторяющихся запросов рекомендуется использовать программу MySQLDumpSlow.

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

    Ведение логов в Logrotate

    На больших ресурсах журналы могут достигать огромных размеров, поэтому нужно своевременно архивировать или очищать логи. С помощью утилиты Logrotate можно управлять ведением журналов: настроить период ротации (архивирование старого журнала и создание нового), период и количество хранения журналов и многое другое.

    Изначально программа отсутствует в системе. Ниже приведены команды для инсталляции Logrotate из официальных репозиториев.

    Ubuntu, Debian:

    CentOS:

    После установки необходимо проверить путь для будущих конфигурационных файлов. Для правильной работы они должны находится в папке «logrotate.d». Проверить данный параметр можно открыв конфигурационный файл командой:

    В директории «RPM packages drop log rotation information into this directory» должна присутствовать строка:

    Теперь создаётся конфигурационный файл «rsyslog.conf». В нём будет находиться конфигурацию по работе с логами. Для создания файла в терминале вводится команда:

    В окне терминала откроется текстовой редактор. Теперь нужно внести конфигурацию, как указано в образце. В качестве примера будет использоваться журнал посещений «Access.log» (Nginx).

    Теперь остаётся только запустить Logrotate. Для этого вводится команда:

    Для проверки правильности работы программы в терминале можно ввести команду:

    Начни экономить на хостинге сейчас — 14 дней бесплатно!

    Источник

    Логи в Linux. Как найти и прочитать?

    Обновл. 20 Май 2021 |

    Процесс загрузки системы, работа приложений и служб, различные действия пользователей, сообщения ядра ОС и многое другое — все эти события регистрируются в специальных журналах операционной системы, так называемых log-файлах (или «логах»). Если в работе системы что-то пойдет не так, то эти файлы станут для вас полезным источником информации, с помощью которого вы сможете разобраться в причинах возникших проблем и самостоятельно их устранить.

    Как посмотреть логи в Linux?

    Большинство логов в Linux генерируются системными демонами syslogd или rsyslogd и хранятся в обычном текстовом файле ASCII в каталоге /var/log. Этот каталог содержит лог-файлы самой ОС, служб и различных приложений, запущенных в системе. Вот как этот каталог выглядит в типичной системе Debian Linux:

    Если вы попробуете просмотреть какой-нибудь лог-файл от имени обычного пользователя, то в 99% случаев система ответит вам сообщением о нехватке прав доступа. Поэтому я заранее переключился на пользователя root (команда su –) и все дальнейшие действия будут выполняться от его имени.

    Теперь можно перейти к непосредственному изучению содержимого лог-файлов. И для начала, мы заглянем внутрь boot.log. Данный лог-файл содержит информацию обо всех этапах загрузки операционной системы:

    root@debian:/var/log# tail boot.log

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

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

    tail — вывод последних 10 строк;

    head — вывод первых 10 строк;

    cat — вывод содержимого всего лог-файла;

    grep — поиск в лог-файле всех вхождений заданного выражения или фильтрация лог-файла по заданному выражению;

    zcat — отображает всё содержимое сжатых лог-файлов (с расширением *.gz);

    zmore — постраничный просмотр сжатых лог-файлов, без их распаковки;

    zgrep — поиск внутри сжатого лог-файла.

    Основные логи

    В основных логах, необходимых для работы Linux, содержится наиболее значительный объем информации о текущем состоянии системы. Их можно условно разделить на четыре категории:

    Многие из этих лог-файлов располагаются в каталоге var/log. Наиболее распространенными логами являются:

    /var/log/boot.log — журнал загрузки системы (в нем хранится вся информация, связанная с этапами загрузки ОС);

    /var/log/kern.log — журнал ядра (в нем хранятся сообщения и предупреждения, поступающие непосредственно из ядра Linux);

    /var/log/syslog или /var/log/messages — журналы, в которых хранится информация об общей активности в системе (включая сообщения этапа загрузки);

    /var/log/auth.log или /var/log/secure — журналы аутентификации и безопасности (в них хранятся записи обо всех попытках входа в систему, включая как успешные, так и неудачные);

    /var/log/debug — журнал отладки (в нем хранится подробная отладочная информация системы и приложений);

    /var/log/daemon.log — журнал демонов (содержит информацию о событиях, связанных с различными запущенными в системе демонами/службами);

    /var/log/maillog или /var/log/mail.log — журналы почтовых серверов (в них хранится информация, относящаяся к почтовым серверам и архивированию электронных писем);

    /var/log/cron — журнал, в котором хранится информация о запланированных задачах (заданиях cron);

    /var/log/faillog — информация о неудачных входах в систему. Журнал полезен для изучения потенциальных нарушений безопасности, таких как: взломы учетных записей, попытки перебора паролей и пр.;

    /var/log/dmesg — журнал сообщений драйверов устройств. Просмотреть содержимое данного журнала можно с помощью команды dmesg . Стоит заметить, что при достижении своего предела, старые сообщения перезаписываются более новыми.

    /var/log/Xorg.x.log — журнал сообщений X-сервера.

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

    /var/log/dpkg.log — журнал пакетов, установленных через утилиту dpkg в системах на основе Debian Linux.

    /var/log/yum.log — журнал пакетов, установленных через утилиту yum в системах на основе Red Hat Linux.

    /var/log/emerge.log — журнал пакетов (ebuild), установленных через утилиту emerge в Gentoo Linux.

    Не все журналы разработаны в удобочитаемом виде. Некоторые из них предназначены только для чтения системными приложениями и представлены в бинарном формате данных:

    /var/log/utmp и /var/log/utmp — журналы учета входов пользователей в систему. Для просмотра сообщений применяется команда utmpdump , например:

    /var/log/lastlog — журнал с информацией о последних входах пользователей. Для просмотра сообщений применяется команда lastlog :

    Ротация лог-файлов

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

    Цель ротации заключается в сжатии устаревших лог-файлов, которые занимают много места. Лог-файлы, в конце имен которых добавлены нули, являются ротируемыми (их имена были автоматически изменены системой). Ротацию лог-файлов можно выполнить с помощью команды logrotate, например:

    Настройки ротации лог-файлов хранятся в соответствующем файле конфигурации /etc/logrotate.conf:

    var/log/имя_журнала.log <
    Missingok
    Notifempty
    Compress
    Size 20k
    Daily
    Create 0600 root root
    >

    Разберем детально каждую строку вышеприведенного фрагмента:

    Missingok — указывает команде logrotate не выводить ошибку, если лог-файл отсутствует.

    Notifempty — если лог-файл пуст, то ротации не будет.

    Compress — лог-файл необходимо сжать.

    Size 20k — гарантирует, что лог-файл не превышает заданного размера, в противном случае производится его ротация.

    Daily — ротация лог-файлов по ежедневному расписанию. Также можно задавать ежечасный ( Hourly ), еженедельный ( Weekly ), ежемесячный ( Monthly ) или ежегодный ( Yearly ) график.

    Create 0600 root root — создает экземпляр лог-файла, владельцем и группой которого является root.

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

    systemd и journald

    systemd — это подсистема инициализации и управления службами в Linux, фактически вытеснившая в 2010-е годы традиционную подсистему init. В связке с ней работает и journald — демон сбора логов, являющийся частью systemd. Он собирает логи со всей системы и хранит их в бинарном виде в каталоге /var/log/journal. Для того чтобы их просмотреть, создана специальная утилита journalctl. Рассмотрим несколько примеров её применения.

    Чтобы просмотреть последние 10 строк логов всех запусков системы, достаточно выполнить следующую команду:

    # journalctl —list-boots | tail

    Видите столбец, который я обвел красным? Цифрой 0 в нем обозначена текущая загрузка системы, цифрой -1 — предыдущая и т.д. Если вы хотите просмотреть логи какой-то конкретной загрузки, например, позапрошлой, то достаточно ввести:

    Также можно просмотреть информацию по выбранной службе, например, по NetworkManager:

    # journalctl -u NetworkManager

    Или же вывести сообщения ядра ОС:

    Для получения своих, каких-то более конкретных результатов, допускается комбинировать опции и параметры команды journalctl :

    # journalctl -b -1 -u NetworkManager

    Для вывода информации только по нескольким последним записям, применяется опция -n , задающая их количество:

    # journalctl -u NetworkManager -n 5

    Если говорить про systemd, то, наверное, стоит упомянуть и про команду systemd-analyze, которая отвечает за сбор статистики загрузки системы. Применение данной команды без параметров отобразит общее время загрузки системы:

    С помощью параметра blame можно увидеть, сколько времени понадобилось для загрузки каждой конкретной службы (при этом сверху отобразятся самые медленные):

    Приоритет сообщений в лог-файлах

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

    emerg — наивысший приоритет, что-то сломалось, повод паниковать;

    alert — тревога, стоит волноваться;

    crit — критическое событие, стоит насторожиться;

    err — ошибка;

    warning — предупреждение;

    notice — уведомление, можно не заморачиваться;

    info — информационное сообщение, принять к сведению и забыть;

    debug — отладочная информация.

    Применяя вышеописанные значения приоритетов, можно просматривать сообщения лог-файлов, фильтруя их по заданному приоритету:

    # grep ‘err’ /var/log/syslog

    Или же для journalctl:

    # journalctl -p warning -b 0

    Заключение

    Конечно, на данном уроке были рассмотрены только самые основные моменты данной темы. Но в то же время объема представленной информации вполне хватит обычному пользователю, чтобы свободно работать с логами в Linux. Увидимся!

    Поделиться в социальных сетях:

    Источник

    Читайте также:  Linux qt platform plugin xcb
    Оцените статью