-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLinux_Project.txt
92 lines (66 loc) · 7.24 KB
/
Linux_Project.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
ОТЧЁТ О ВОССТАНОВЛЕНИИ РАБОТЫ САЙТА.
На сервере, где работал веб-сервер и веб-приложение, произошел сбой.
Восстановление началось с проверки того, что отображается в браузере по адресу сайта, где было обнаружено сообщение об ошибке настройки $wgServer must be set in LocalSettings.php.
Убедившись, что через web интерфейс не работает, подключились к серверу [email protected] через протокол ssh (Secure Shell). Командой
sudo service httpd status проверили статус сервиса http. Увидели статус active (running). После перезагрузки shift+reload проблема не решилась.
active (running)
При попытке выполнить команду ls -al /var/www/html/mediawiki было получено сообщение об отсутствии места на диске: No space left on device
Команда df -h (disk free human-readable: информации о дисковом пространстве в "человеко-читаемом виде) показала, что корневой раздел заполнен на 100%.
Командой sudo find / -type f -size +100M нашли файлы, которые занимают более 100МБ
Командой sudo find / -type f -size +100M -exec du -h {} + ( поиск во всей файловой системе файлов больше 100 мегабайт) выяснили, что файл доступа access_log в папке /var/log/httpd занимает 7.0 ГБ.
Командой sudo echo > var/log/httpd/access_log попытались очистить объёмный файл - не получилось.
Остановили работу httpd сервера командой sudo service httpd stop.
Так как стереть данные в этом файле не удалось, командой sudo rm -f /var/log/httpd/access_log удалили этот файл.
df -h показала, что теперь свободно 6.9 ГБ.
Запустили снова работу httpd сервера командой sudo service httpd start - сайт не заработал.
В директории /var/www/html/mediawiki/ был найден файл LoclSettings.php с конфигурацией и пустой файл LocаlSettings.php.
Командой
rm /var/www/html/mediawiki/LocalSettings.php - его удалили.
Командой
mv /var/www/html/mediawiki/LoclSettings.php /var/www/html/mediawiki/LocalSettings.php
переименовали файл с конфигурацией.
В файле LocalSettings.php переменная $wgServer содержала неправильный IP-адрес. В редакторе nano заменили его на актуальный IP-адрес: 3.68.118.16
Перезапустили сервер:
sudo service httpd restart - работа сайта возобновилась.
Начали искать причины "падения" сайта.
Снова проверили наличие файлов более 100 MB командами
sudo find / -type f -size +100M -exec du -h {} + . Нашли большие файлы с архивами: /var/log/httpd/lof_20240402.tar.gz и /var/log/httpd/lof_20240408.tar.gz. Предположение, что неправильно настроен журнал логов.
sudo crontab -l показал, что каждую минуту рекурсивно создается архив с логами, что и заполняло быстро память системы.
sudo crontab -e в редакторе vi закомментировали "#" этот crontab.
После этого удалили большие файлы логов:
sudo rm -rf /var/log/httpd/log_20240403.tar.gz ,
sudo rm -rf /var/log/httpd/log_20240731.tar.gz и
sudo rm -rf /var/log/httpd/log_20240801.tar.gz
При попытке очистить журнал:
sudo echo > /var/log/httpd/acces_log - получили Permission denied
“sudo su - “ - получили root права и очистили файл echo > /var/log/httpd/acces_log
exit - вышли из режима root.
После нужно было написать новый скрипт для записи архивов логов и удаления старых архивов:
nano backup_httpd_log.sh
------------------------------------------------------------------------------------------
Скрипт:
#!/bin/bash
#
LOG_DIR="/var/log/httpd" (создание переменной LOG_DIR с путем к директории, где хранятся лог-файлы.)
BACKUP_DIR="/home/ec2-user/backup_httpd_log" (путь к директории, в которую будут сохраняться архивы логов)
mkdir -p "$BACKUP_DIR" (создание директории -p eckb zt существует)
DATE=`date +'%Y%m%d'` (создание переменной DATE с текущей датой)
ARCHIVE="$BACKUP_DIR/LogHTTPD-$DATE.tar.gz" (создание переменной ARCHIVE с путем и именем файла архива.)
sudo tar -czf "@ARCHIVE" "$LOG_DIR" (создание сжатого архива с именем файла)
sudo service httpd stop (остановка сервера)
sudo rm -rf "$LOG_DIR/access_log" (удаление )
sudo service httpd start (запуск сервера)
find "$BACKUP_DIR" -type f -name "LogHTTPD-*.tar.gz" -mtime +3 -exec rm -rf {} \; (нахождение и удаление старых архивов, созданных более 3-х дней назад)
Сохранили файл :wq
------------------------------------------------------------------------------------------
chmod +x /home/ec2-user/backup_logs.sh - раздали право на исполнение всем пользователям
sudo crontab -e - добавляем новый скрипт в crontab
5 0 * * * /home/ec2-user/backup+httpd_log.sh - выполнение каждый день в 0 часов 5 минут.
Причины инцидента:
Некорректная работа crontab: рекурсивное архивирование логов каждую минуту и быстрое заполнение диска
Некорректные настройка конфигурационного файла LocalSettings.php: Неправильный IP-адрес в переменной $wgServer и проблемы с правами на файл.
Рекомендации:
1. Настройка мониторинга для отслеживания состояния дискового пространства, загрузки процессора и памяти.
2. Автоматизация очистки логов.
3. Регулярная проверка конфигурационных файлов
4. Добавить проверку доступности вэб-сервера и отправку сообщения админу в случае отсутствия доступа.