ПРИВАТНА ІНФРАСТРУКТУРА / БЕЗ ПОТРЕБИ В IDПрочитайте доктрину приватності
Польові нотатки KoalaVPS

Зробіть агента сервісом, а не забутим терміналом.

Запускайте довготривалі робочі процеси з явним станом, обмеженими дозволами та планом відновлення.

Запакуйте воркер

Використовуйте підтримуване середовище виконання, зафіксовані залежності та менеджер служб або контейнер. Налаштуйте обмеження перезапусків і окремого користувача служби. Зберігайте приватні облікові дані провайдера в захищеній конфігурації поза публічними файлами застосунку.

Зберігайте прогрес, перш ніж дії матимуть значення

Використовуйте надійну чергу або базу даних для завдань. Призначайте унікальний ідентифікатор операції, записуйте зовнішні запити та звіряйте невизначені результати. Перезапуск не повинен надсилати другий лист, створювати друге замовлення чи стягувати плату двічі.

Додайте корисну спостережуваність

Відстежуйте завершення завдань, вік черги, частоту помилок і вартість, а не лише перевіряйте, чи існує процес. Тримайте журнали достатньо малими для перегляду та вилучайте токени, підказки й документи, які не потрібно зберігати.

Встановіть чітку межу

Обмежуйте витрати моделі, паралельність браузера, час виконання та кількість повторних спроб. Тримайте простий перемикач паузи та шлях людського перегляду для наслідкових дій. Менший, добре спостережуваний воркер легше викликає довіру, ніж необмежений.

Використовуйте супервізор і продуманий розклад

Systemd і Docker — поширені способи зберегти роботу процесу після від'єднання термінала. Для служби systemd Type=exec може повідомляти про збій виконання безпосередніше, ніж простий фоновий запуск, а Restart=on-failure може перезапускати збої за обмеженою політикою. Заплановані завдання повинні уникати перекриття запусків. Чітко вказуйте робочий каталог, користувача служби та середовище. Приклад припускає, що користувач koala-agent, віртуальне середовище, модуль воркера та приватний файл середовища вже існують; адаптуйте їх перед встановленням юніта.

  • Використовуйте окремий обліковий запис служби
  • Встановіть затримку перезапуску та граничну кількість збоїв
  • Перевірте попередній стан завдання перед запуском запланованого виконання
[Unit]
Description=Example agent worker
After=network-online.target

[Service]
Type=exec
User=koala-agent
WorkingDirectory=/opt/koala-agent
EnvironmentFile=/etc/koala-agent.env
ExecStart=/opt/koala-agent/.venv/bin/python -m worker
Restart=on-failure
RestartSec=10
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target

Встановіть денний бюджет і межу дублювання

Задайте воркеру максимальну кількість запитів, ліміт витрат і тайм-аут виконання. Використовуйте довговічний запис ідемпотентності для дій, що впливають на зовнішній світ. Успішний клік у браузері може статися до того, як процес отримає відповідь; перевірте зовнішній стан, перш ніж повторити спробу. Монтування секретів у Docker Compose може тримати секрет поза образом, але дозволи та застосунок-споживач усе одно потребують перевірки.

Задайте періодичному завданню явну політику наздоганяння

Використовуйте довготривалу службу для постійного обробника черги та службу oneshot, що запускається таймером, для обмеженого запланованого завдання. З календарним таймером systemd Persistent=true може запустити одне пропущене спрацювання після простою; він не відтворює весь бізнес-накопичений обсяг. Вирішіть, чи бажане таке надолуження. RandomizedDelaySec може розподіляти запуски, тоді як оренда на рівні застосунку запобігає обробці тієї самої запланованої роботи двома репліками.

  • Запишіть передбачуваний часовий пояс і перегляньте наступні часи запуску перед увімкненням розкладу.
  • Тримайте граничний термін виконання завдання коротшим за інтервал, що не повинен перекриватися, або використовуйте довговічну оренду з терміном дії та власником.
  • Зробіть так, щоб завдання вибирало невиконану роботу зі збереженого стану, а не припускало, що кожна попередня подія таймера виконалася.
  • Перевірте встановлену версію systemd, перш ніж використовувати директиву з найновішого посібника.
# Read-only checks after creating your own matching units.
systemctl list-timers --all
systemctl status koala-agent.service
journalctl -u koala-agent.service --since today --no-pager

Відрізніть цикл збоїв від завислого воркера

Політика перезапуску може відновити процес, що збійнув, але повторення недійсних облікових даних або зламаної міграції кожні кілька секунд робить збій гучнішим. Обмежуйте запуски служби та сповіщайте про повторювані збої. Живий процес також може застрягти: вимірюйте вік найстарішого завдання та останньої завершеної операції. Перевірте збій API, порожній диск і зупинку процесу на одноразових завданнях, а потім переконайтеся, що стійкий стан запобігає дублюванню зовнішніх дій.

  • Встановіть бюджет постачальника та тайм-аут запиту в застосунку, а також межу CPU/пам'яті в середовищі виконання.
  • Контейнери Docker не мають корисного обмеження пам'яті для конкретного навантаження лише тому, що вони є контейнерами; налаштовуйте й перевіряйте обмеження свідомо.
  • Зберігайте секрет поза образом і публічним деревом, а потім перевірте, що журнали збоїв і діагностика його редагують.
  • Залишайте ручний шлях зупинки та вимагайте належного перегляду для витрат, записів у робочому середовищі або зовнішніх повідомлень.
НАЛАШТУЙТЕ ВАШУ ІНФРАСТРУКТУРУ

Візьміть контроль.
Розгортайте на своїх умовах.

Без паперів про особу. Повний адміністративний доступ. Криптонативна оплата.