commit 44a9b3319bea2e51ada29ca8eafc60c4cf441af1 Author: alex Date: Sat Dec 13 19:28:22 2025 +0300 Добавить README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..be232e0 --- /dev/null +++ b/README.md @@ -0,0 +1,106 @@ +# Домашнее задание 10 + +## Bash скрипт анализирующий логи Nginx + +Для выполнение задания используется Ubuntu Server 24.04 + + +### Суть работы скрипта + +Пишем скрипт, который будет анализировать логи установленного nginx в каталоге /var/log/nginx по следующей схеме: + +1. Анализируем access.log с момента прошлого запуска (если произошла ротация логов в файл access.log.1, то это так же учитывается), если запускается впервые то весь access.log: + * Ищем топ 10 ip по количеству запросов + * Ищем топ 10 запрашиваемых URL + * Количество ответов HTTP-кодов (с 200 по 400) + * Количество ответов HTTP-кодов (с 400 по 600) + +2. Анализируем error.log с момента прошлого запуска (если произошла ротация логов в файл error.log.1, то это так же учитывается), если запускается впервые то весь error.log: + * Подсчитываем количество ошибок + +3. Анализируем логи ошибок nginx в systemd с момента последнего запуска, если запускается впервые то за последние сутки: + * Если есть ошибки, то последние 3 мы отправим в отчете + +4. Формируем отчет, который мы отправляем через telegram (тут решил уйти от стандартной почты, так как телеграм считаю более удобным вариантом). + +5. Сохраняем в файле var.tmp количество строк в логах, именно так мы будет выяснять с какого места нам требуется анализировать логи при следующих запусках. Так же сохраняем дату последнего запуска + + + +Так же скрипт не позволяет запускать 2 копии одновременно, создавая при запуске файл /tmp/check-log-nginx.lock, а после завершения удаляя его. + + +Пример сообщения, который высылает скрипт + +```bash +Статисктика из логов Nginx начиная с 2025-12-13 16:18:01 по текущее время. + +=============Статистика Nginx============= + +===Топ 10 ip адресов: === + +192.168.50.16 7 запросов + +===Топ 10 зпрашиваемых URL: === + +/bvaolvabh 4 запросов +/ 2 запросов +/favicon.ico 1 запросов + +===✅Удачные запросы: === + +код 200 2 запросов + +===❗️Неудачные запросы: === + +код 404 5 запросов + + +===Журнал error.log=== + +✅ Журнал не содержит ошибок с момента последней проверки + +=============Ошибки systemd============= + +✅С момента последней проверки, ошибок в systemd нет! +``` + + + +### Создаем скрипт и задание + +Создаем каталог в /opt где будет хранится наш скрипт + +```bash +nimda@ubuntu-1:~$ sudo mkdir /opt/check-log-nginx +``` + + + +Копируем скопируем [cкрипт check-log-nginx.sh](check-log-nginx.sh) в созданный каталог. + + +Даем права на запуск + +```bash +nimda@ubuntu-1:~$ sudo chmod +x /opt/check-log-nginx/check-log-nginx.sh +``` + + + +Делаем в cron задание, которое будет выполняться каждые 4 часа но с 8 до 21. + +Открываем cron +```bash +nimda@ubuntu-1:~$ sudo crontab -e +``` + +и добавляем строку + +```bash +0 8-21/4 * * * /opt/check-log-nginx/check-log-nginx.sh +``` + + + +Все готово! Теперь каждые 4 часа с 8 до 21 нам пудет приходить статистика по nginx/ \ No newline at end of file