Перейти до вмісту

Побудувала моніторинг хоста з dead man's switch

Побудувала моніторинг за принципом dead man's switch, який надсилає пінг, лише поки пам'ять і диск у нормі, тож хост у погіршеному стані здіймає тривогу своїм мовчанням, — і виявила шість імен змінних зі словом «free» там, де перевірка правильно вимірювала «available»: на машині з 464 МБ ці значення різняться на порядок.

  • Fuel gauge, thermometer, temperature symbol
    Фото: u_ieeicob7xz / Pixabay
  • Clock, alarm clock, bell jar
    Фото: domeckopol / Pixabay

хост, що б'є на сполох, замовкаючи

Ситуація. Хост із 464 МБ пам’яті, на якому працюють git‑сервер, база даних і вебсервер, може впасти двома реалістичними способами: у нього скінчиться пам’ять або місце на диску. Жоден не попереджає про себе. Обидва цілком можна передбачити за кілька годин, якщо щось за цим стежить, а не стежило ніщо.

Завдання. Хостові потрібна була сигналізація, яка працює й тоді, коли сам хост не працює, — а це відкидає все, що мусить надіслати повідомлення в момент збою.

Дія. Рішення — dead man’s switch на таймері. Кожні п’ятнадцять хвилин, із випадковим зсувом, невеликий скрипт вимірює доступну пам’ять і вільне місце на диску й пінгує зовнішній сервіс, лише якщо обидва показники вищі за свої пороги. Тривогу здіймає тиша. Машина, у якої скінчилася пам’ять, пропала мережа або яка перестала завантажуватися, дає точнісінько той самий сигнал, що й несправна, — це правильна поведінка, і саме тому обрано такий підхід, а не агента, який звітує про стан. Вимірюється доступна пам’ять, а не вільна, і ця відмінність виявилася найповчальнішою частиною роботи: скрипт від початку читав правильний стовпчик, тоді як шість імен змінних навколо нього казали «free». На справному Linux‑хості вільної пам’яті майже немає, бо ядро віддає незайняту пам’ять під кеш, тож читач, який звіряв би ці імена з порогом у десять відсотків, побачив би дванадцять вільних мегабайтів на машині з 464 МБ, вирішив би, що перевірка зламана, і виправив би її зміною в один символ, — а та перетворила б робочу сигналізацію на таку, що постійно перебуває за порогом і яку менш ніж за тиждень заглушать.

Результат. Тепер у хоста є сигналізація, режим відмови якої — спрацювати, а назви, що могли б її знищити, виправлено. Справжнє обмеження dead man’s switch записано в його власній документації: він доводить, що машина справна, але не те, що сайт обслуговує запити, а це різні питання.

Одна частина довшого переліку — і він увесь на цьому сайті.

Кожен запис написано однаково: ситуація, завдання, що ми зробили і що змінилося.

Переглянути весь перелік