Добавить README.md

This commit is contained in:
2025-12-13 19:28:22 +03:00
commit 44a9b3319b

106
README.md Normal file
View File

@@ -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
```
Копируем скопируем [рипт 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/