Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

Linux / DevOps

Утилита grep: поиск IP-адресов и подсчет количества ошибок в логах

Обновлено: 27.08.2026 · Официальная документация ↗

Зачем фильтровать логи с помощью grep?

Лог-файлы активных веб-серверов (например, access.log и error.log) могут содержать миллионы строк и весить десятки гигабайт. Открывать такие файлы в обычном текстовом редакторе бессмысленно — сервер просто зависнет из-за нехватки оперативной памяти. Утилита grep считывает поток данных построчно и мгновенно находит нужную информацию по ключевым словам или регулярным выражениям.

Шпаргалка по анализу логов утилитой grep

  1. Шаг 1. Поиск всех запросов с конкретного IP-адреса:

    Найдем все действия подозрительного IP-адреса в журнале доступа веб-сервера:

    grep "192.168.1.55" /var/log/nginx/access.log
  2. Шаг 2. Быстрый подсчет количества запросов или ошибок (ключ -c):

    Чтобы не выводить миллион строк на экран, а сразу узнать точное число совпадений, используйте флаг -c (count):

    grep -c "192.168.1.55" /var/log/nginx/access.log
  3. Шаг 3. Поиск ошибок без учета регистра (ключ -i):

    Найдем записи со словами «error», «ERROR» или «Error»:

    grep -i "error" /var/log/nginx/error.log
  4. Шаг 4. Поиск строк, НЕ содержащих определенный текст (инверсия -v):

    Отфильтруем полезные логи, исключив запросы к статическим картинкам и favicon:

    grep -v "favicon.ico" /var/log/nginx/access.log | grep -v ".png"
  5. Шаг 5. Вывод 5 строк контекста ДО и ПОСЛЕ найденной ошибки:

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

    grep -B 3 -A 5 "Fatal error" /var/log/php-fpm.log

    (Флаг -B 3 выводит 3 строки до ошибки, а -A 5 — 5 строк после).

  6. Шаг 6. Топ-10 самых активных IP-адресов в логе (связка grep + awk + sort):
    awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 10
💡 Практика специалистов: Если ваш сервер подвергся DDoS или брутфорс-атаке, выгрузите топ-адреса через связку grep/awk и сразу заблокируйте злостные IP в сетевом экране: 'sudo ufw deny from 192.168.1.55 to any'.

Частые вопросы (FAQ)

Как искать текст сразу во всех сжатых архивных логах (.gz)?

Используйте специальную утилиту zgrep. Она работает точно так же, как grep, но читает сжатые архивы на лету без предварительной распаковки: zgrep '192.168.1.55' /var/log/nginx/access.log.*.gz.

Как подсветить найденные совпадения цветом?

Добавьте флаг --color=auto, например: grep --color=auto 'POST' access.log.

Как искать ошибки во всех вложенных подпапках сразу?

Добавьте ключ рекурсивного поиска -r: grep -rn 'database connection failed' /var/log/.

Как вывести только уникальные найденные значения?

Передайте вывод grep по конвейеру в утилиты sort и uniq: grep 'Failed password' /var/log/auth.log | awk '{print $11}' | sort -u.

Полезные материалы
Рекомендуем