3 558 955 — рівно стільки секунд минуло з моменту останнього успішного запуску сервера Puppeteer!

На момент написання цієї публікації аптайм мого сервера, на якому розміщено систему моніторингу сторінки стану операційної системи NetBSD-on-Wii проєкту Алекса Гейдока, становить 41,19 доби. Локальний Puppeteer було запущено приблизно о 05:13:43.654, 17 травня (GMT).

Водночас сама система NetBSD, яку Алекс запустив 21 квітня о 17:12:00, уже пропрацювала 25 днів, 12 годин, 1 хвилину і 43 секунди на момент запуску мого моніторингу.

Що ж я тут рахую?

Поточний JSON‐звіт сервера Puppeteer

З цікавості я підрахував не лише аптайм свого моніторингу, а й проміжок часу між запуском системи на консолі Wii та моментом, коли мій скрипт почав відстеження. Але значно цікавіше інше — з якими труднощами я зіткнувся за весь час роботи.

Ви вже, напевно, чули про збій, який стався не з моєї вини і навіть не з вини Алекса 10 червня. Але зараз не про нього мова. Тоді, до речі, я поділився з Алексом міркуваннями щодо власної проблеми з публікацією неповних скриншотів. Частина знімків — учора, наприклад, приблизно 5 із 48 — зберігаються неповними.

Структура звіту

Можливо, ви ще не знайомі зі структурою звіту, який генерується скриптом на сервері Гейдока. Він складається з:

  • ASCII‐лого Wii у верхній частині;
  • заголовка blog.infected.systems NetBSD Wii Status;
  • часу генерації звіту.

Скрипт, як розповідав Алекс, запускається кожні 15 хвилин за допомогою crontab і збирає результати виконання команд:

  • uname -a — інформація про систему;
  • uptime — час роботи й навантаження;
  • bsdfetch — аналог neofetch для BSD‐систем;
  • vmstat — статистика віртуальної пам'яті;
  • iostat -xz ld0 — статистика введення/виведення диска;
  • df -h / — використання дискового простору;
  • top — список активних процесів.

«Я склав простий shell‐скрипт, який запускається з crontab кожні 15 хвилин і виводить системну статистику в базовий HTML‐файл у вебкорені.»

Проблема з синхронізацією

За закономірністю, яку я помітив, його скрипт базується на поступовому заповненні HTML‐файлу. Коли виконується одна з 7 команд, shell‐сценарій записує відповідь прямо у файл. Але мій моніторинг часто «поспішає» заглядати на сторінку і робить скриншоти до повного заповнення сторінки.

Іноді не видно відповіді команди bsdfetch і всього, що нижче, а іноді останньої команди — top.

Не можу сказати, що я нічого не пробував для вирішення цієї проблеми. Перед створенням скриншота мій код перевіряє, чи є на сторінці блок top. І лише коли він наявний, створюється знімок. Але це не допомагає, і це дратує.