Модул 8 · 8.3
Наблюдение на Вашия сървър
Модул 8: Резервни копия и наблюдение · Време за четене: 10 минути
Цел на урока: След този урок ще можете да определите какво да наблюдавате на Вашия сървър (отвън и отвътре), кои прагове имат смисъл и как да се погрижите известието наистина да стигне до Вас, без да се удавите в известия.
Основни понятия: наблюдение отвън, наблюдение отвътре, uptime, http проверка, проверка на порт, изтичане на сертификат, дисково пространство, памет, load, heartbeat (dead man's switch), праг, канал за известия, умора от аларми, графики на доставчика
Защо е нужно наблюдение?
Без наблюдение научавате за проблемите от клиентите си или изобщо не научавате. Уебсайт, който не работи от събота, сертификат, който е изтекъл, диск, който се е напълнил, резервно копие, което от три седмици тихо се проваля: все неща, които бихте могли да забележите навреме. Наблюдение означава: програма следи непрекъснато и Ви предупреждава, когато нещо не е наред.
Доброто наблюдение отговаря на два въпроса:
- Работи ли за потребителя? Това измервате отвън.
- Ще се обърка ли нещо скоро? Това измервате отвътре: диск, памет, обновявания, резервни копия.
Отвън: това, което вижда потребителят
Наблюдението отвън работи на друга машина, а не на Вашия сървър, за предпочитане при друг доставчик. Логично е: ако Вашият сървър не работи, той сам вече не може да предупреди.
| Проверка | Какво прави | Защо |
|---|---|---|
| http(s) | всяка минута зарежда страница и проверява кода на състоянието (200) и евентуално дума на страницата | уебсайтът наистина работи, не само сървърът |
| порт | свързва се например с порт 22 или 443 | услугата слуша и е достъпна |
| ping | изпраща ICMP пакет | сървърът е жив (но това не казва нищо за уебсайта Ви) |
| сертификат | прочита сертификата и датата на изтичане | предупреждава достатъчно рано, преди да изтече |
| DNS | запитва A записа | името все още сочи към правилния сървър |
Сертификатът заслужава допълнително внимание. Сертификатите на Let's Encrypt са с кратка валидност и се подновяват автоматично (урок 7.3), но ако подновяването тихо се провали, ще разберете едва когато посетителите получат предупреждение. От юни 2025 г. самият Let's Encrypt вече не изпраща имейли с напомняне за изтичащи сертификати и сам препоръчва наблюдение. Проверка на сертификата, която предупреждава при по-малко от 14 дни валидност, следователно не е лукс.
Често използвана програма, с която да правите това сами, е Uptime Kuma, която ще инсталирате в контейнер в урок 9.4. За предпочитане е да не я поставяте на същия сървър, който тя трябва да наблюдава, или да я комбинирате с втора, външна проверка. Има и услуги на трети страни, които правят същото. Изберете такава, която Ви подхожда, и обърнете внимание къде е регистрирана, ако в известията може да има данни за Вашите клиенти.
Отвътре: какво ще се обърка скоро
Някои проблеми се виждат отвън едва когато е твърде късно. Тях измервате на самия сървър:
| Какво | Как го виждате | Разумен праг |
|---|---|---|
| Дисково пространство | df -h | предупреждение над 80%, аларма над 90% |
| Inodes (брой файлове) | df -i | същото; един диск може да е "пълен" с милиони малки файлове |
| Памет | free -h, съобщения "Out of memory" в journalctl -k | всяко съобщение за OOM е сигнал |
| Load | uptime, top | продължително над броя на vCPU |
| Неуспешни услуги | systemctl --failed (урок 6.1) | всяка неуспешна услуга |
| Обновявания и рестарт | /var/run/reboot-required, apt list --upgradable (урок 4.2) | обновяване за сигурност, по-старо от два дни |
| Резервни копия | краят на Вашия скрипт за резервни копия (урок 8.2) | всяко неуспешно или неизпълнено пускане |
Това може да стане с прост скрипт и таймер (урок 6.3), който изпраща известие при превишаване, или с програма за наблюдение с агент на сървъра (известни примери с отворен код са Netdata и комбинацията Prometheus с node_exporter). Започнете с малко: дискът, неуспешните услуги и резервните копия улавят повечето проблеми.
Графиките в панела на Вашия доставчик (процесор, памет, мрежа, диск за период от един ден до една година) са чудесно допълнение, за да виждате тенденциите: ако дискът Ви расте с няколко процента всеки месец, знаете кога ще се напълни. При WebOké те са в екрана на VPS, при други доставчици е подобно. Обикновено те не изпращат известия, затова не заместват наблюдението.
Heartbeat: известие, когато нищо не се случва
Някои неща трябва да наблюдавате именно за липсата на сигнал. Нощното резервно копие е най-добрият пример: ако скриптът изобщо не стартира (таймерът е изключен, сървърът е изключен, скриптът е повреден), няма да дойде и съобщение за грешка.
Решението се нарича heartbeat или dead man's switch: системата Ви за наблюдение очаква сигнал всеки ден. Накрая, и само ако всичко е минало успешно, скриптът за резервни копия изпраща малка http заявка към постоянен, таен URL адрес на системата за наблюдение:
restic backup ... && restic check && curl -fsS -m 10 https://status.example.com/api/push/Xyz123abc?status=up >/dev/nullАко сигналът не дойде един ден, получавате известие. За целта Uptime Kuma има тип монитор Push. Има и програми, които можете да хоствате сами, като Healthchecks. Така с един ред проверявате дали резервното копие наистина е било направено.
Известия, които пристигат, но не са твърде много
Известие, което никой не чете, не е наблюдение. Уредете три неща:
- Канал за известия, който наистина виждате: push съобщение на телефона, чат канал, SMS. Имейл също е възможен, но само ако сървърът Ви може надеждно да изпраща поща, а имейлите лесно се пропускат. За най-важните известия използвайте два канала.
- Независимост от това, което наблюдавате. Ако самият сървър изпраща имейла за пълен диск, той няма да пристигне, когато дискът е пълен. Наблюдението отвън и heartbeat улавят това.
- Малко, но основателни. Ако всеки ден получавате десет известия, с които не правите нищо, ще започнете да ги пренебрегвате, включително единственото, което има значение. Това се нарича умора от аларми. Задайте праговете така, че едно известие да означава: трябва да направите нещо. Нека известието се задейства едва след няколко поредни неуспешни проверки (например три), за да не Ви събуди един изгубен пакет.
Тествайте известията си: изключете за малко някоя услуга и вижте дали известието пристига и колко време е отнело.
Какво не трябва да правите
- Страници за наблюдение, отворени за всички, с вътрешни имена и адреси. Публична страница за състоянието е допустима, но показвайте само това, което посетителите могат да знаят.
- Администраторски акаунт в системата за наблюдение без силна парола и 2FA. Който има достъп до наблюдението Ви, може да изключи известията.
- Агенти с повече права от необходимото. Обикновено агентът за наблюдение не трябва да бъде root.
Обобщение
- Наблюдавайте отвън дали всичко работи (http, порт, сертификат, DNS), от друга машина, и отвътре дали скоро ще се обърка нещо (диск, памет, услуги, обновявания, резервни копия).
- Сертификатите заслужават собствена проверка: от юни 2025 г. Let's Encrypt вече не изпраща имейли с напомняне.
- Heartbeat съобщава за липсата на сигнал. Идеално е за резервни копия и планирани задачи.
- Изберете канал за известия, който наистина виждате и който е независим от самия сървър, и задайте праговете така, че всяко известие да изисква действие.
- Графиките на Вашия доставчик показват тенденции, но обикновено не изпращат известия.
Тест (quiz)
Задача
Задача O8.3: Вашият списък за наблюдение. Съставете списък за наблюдение за Вашия собствен сървър: кои проверки отвън (с какъв интервал и откъде), кои отвътре (с какви прагове), кои heartbeat сигнали и през какъв канал пристигат известията. Настройте поне една външна http проверка или проверка на сертификата и един heartbeat (например за резервното копие) и тествайте известието, като изключите за малко някоя услуга. Запишете колко време е минало, докато пристигне известието.
Задача O8.3: Вашият списък за наблюдение
Тази задача изпълнявате сами; никой не я проверява. Отбележете какво сте направили и маркирайте задачата като изпълнена.
Проверка отвън от друга машина (за предпочитане при друг доставчик), на всеки 1 до 5 минути с няколко повторения. Сертификат: 14 дни, диск: 80/90%, systemctl --failed, heartbeat само при успешно архивиране. Известия, които не изискват действие: премахнете ги или повишете прага.
Вашите отметки и бележки остават само в този браузър; не ги изпращаме никъде. Ако сте влезли, в Моите курсове запазваме само че сте изпълнили задачата.
Още за четене
- Нямате повече достъп до Вашия VPS: какво да направите?
- Let's Encrypt, Expiration Notification Service Has Ended: https://letsencrypt.org/2025/06/26/expiration-notification-service-has-ended
- Uptime Kuma (GitHub): https://github.com/louislam/uptime-kuma
- VPS: от първото влизане до сигурен сървър 8.3: Мониторинг отвън и отвътре
- VPS: от първото влизане до сигурен сървър 7.1: Uptime Kuma: наблюдение на Вашите сайтове и сървър
