Верстакфорум практиков
рекламаiprazon: приватные серверные адреса IPv4 и SOCKS5, безлимитный трафик, бесплатный тест до 2 часов
ФорумНастройка и подключение

Проверка настроек до прогона: короткий чек-скрипт

Пётр Мельник
Пётр Мельник
Участник
сообщений 810
с июл
22 апреля, 17:27первое сообщение

Надоело ловить обрыв на втором часу из-за ерунды вроде забытой переменной. Собрал коротышку, который гоняю перед каждым стартом. Пять пунктов, десять секунд.

#!/usr/bin/env bash
set -u
ADR=$(curl -s --max-time 10 https://api.ipify.org) || ADR=пусто
echo "внешний адрес: $ADR"
KOD=$(curl -s -o /dev/null -w "%{http_code}" --max-time 15 https://example.org/catalog/1)
echo "код цели: $KOD"
MB=$(df -Pm . | awk 'NR==2{print $4}')
echo "свободно мегабайт: $MB"
echo "переменные: ${HTTPS_PROXY:-нет}"
wc -l < spisok.txt

Что сюда добавить, чтобы закрыть остальные грабли? Интересует живой опыт.

сначала замер, потом мнение
sysdiag
sysdiag
Знаток
сообщений 1975
с фев
1 сентября, 08:44#2

Часы добавьте. Расхождение на пару минут ломает сессии и подписи, а в логе вы увидите обычный отказ доступа и полезете искать вину в скрипте.

timedatectl show -p NTPSynchronized --value

Ответ no означает, что прогон запускать рано.

логи читаю раньше почты
stackfix
stackfix
Участник
сообщений 495
с окт
8 февраля, 11:01#3

И код возврата поставьте, иначе проверка превращается в красивую печать в консоль. У меня скрипт заканчивается выходом с единицей, а запуск прогона идёт следующей строкой через двойной амперсанд. Не прошло, дальше просто ничего не случилось.

пишу скрипты, чтобы не писать скрипты
Пётр Мельник
Пётр Мельник
Участник
сообщений 810
с июл
15 июля, 14:18#4
stackfix: превращается в красивую печать в консоль

Виноват, ровно так и было. Переделал: каждая проверка пишет строку и копит счётчик, в конце exit по счётчику.

сначала замер, потом мнение
Женя Ковалёв
Женя Ковалёв
Новичок
сообщений 62
с авг, второй сезон
22 декабря, 17:35#5

а по списку адресов какой порог ставить? если два из десяти молчат, это уже стоп или норм

iron_shell
iron_shell
Знаток
сообщений 1050
с июн
1 мая, 08:52#6

Женя, десяти мало для вывода. Берите выборку штук на двадцать, случайную, и смотрите долю. Ниже восьмидесяти процентов живых имеет смысл притормозить и разобраться. Одиночное молчание чаще означает занятый узел на той стороне, к следующей попытке он отвечает.

И проверяйте полным запросом к своей цели. Открытие сокета проходит почти всегда, толку от такой проверки мало.

Настя Лужина
Настя Лужина
Новичок
сообщений 265
с янв, второй сезон
8 октября, 11:09#7

Важная мелочь, про которую забывают: проверку надо гонять тем же путём, что и прогон. Тот же пользователь, тот же рабочий каталог, тот же набор переменных. Я месяц наблюдала картину, где чек из-под себя зелёный, а служба из-под своего пользователя падает на первом запросе, потому что переменные ей приходили из другого файла.

Пётр Мельник
Пётр Мельник
Участник
сообщений 810
с июл
15 марта, 14:26#8

Настя, в точку. Повесил чек как ExecStartPre в том же юните, где и сам прогон. Разом отпало три вопроса.

сначала замер, потом мнение
Борис Лапин
Борис Лапин
Знаток
сообщений 1960
с мар
22 августа, 17:43#9

Раз тема живая, поделюсь тем, к чему пришёл за несколько сотен ночных прогонов.

Проверок у меня две, и они разные по весу. Быстрая идёт перед каждым стартом, укладывается в десять секунд и трогает только то, что ломается часто: доступность цели, внешний адрес, часы, место на диске, свежесть списка. Медленная гоняется раз в сутки, там уже выборка адресов, замер отклика по медиане, разбор одной карточки с проверкой заполненности полей и запись результата в историю.

История важнее самого факта проверки. Каждый запуск дописывает строку с датой, откликом и долей живых. Через неделю видно движение: отклик пополз вверх задолго до того, как прогон начал спотыкаться. Без истории вы каждый раз смотрите на один снимок и понятия не имеете, норма это или уже беда.

Второе правило: проверка мягче прогона. Если чек требует девяносто пять процентов живых, а прогон спокойно работает на семидесяти, вы будете сидеть с красным чеком при исправной системе и через месяц перестанете на него смотреть.

Третье: сообщение об отказе пишите словами. Фразой вида «часы разошлись, синхронизация выключена». Код возврата и имя функции в четыре утра читаются плохо.

на что уходит время быстрой проверки, секунды
на что уходит время быстрой проверки, секунды
stackfix
stackfix
Участник
сообщений 495
с окт
1 января, 08:00#10

Про мягкость подпишусь двумя руками. У меня чек полгода стоял строже прогона, кончилось тем, что все привыкли запускать с ключом обхода проверки.

пишу скрипты, чтобы не писать скрипты
Женя Ковалёв
Женя Ковалёв
Новичок
сообщений 62
с авг, второй сезон
8 июня, 11:17#11

записал, спасибо. попробую сегодня же

Пётр Мельник
Пётр Мельник
Участник
сообщений 810
с июл
15 ноября, 14:34#12

Итог для тех, кто найдёт тему поиском. Добавил часы, код возврата, историю в одну строку и повесил всё как ExecStartPre. За две недели чек трижды остановил старт: дважды разъехались часы после переезда машины, один раз кончилось место под сырьё. Оба случая раньше стоили бы мне ночи.

сначала замер, потом мнение