Перейти до основного вмісту
Версія: 2.0

Моніторинг

Waterline — UI та API оператора для стану workflow. Його постачання відповідає обраній межі runtime: Cloud містить Managed Waterline, а оператор власного розгортання за потреби окремо розгортає Waterline.

Waterline — один операторський продукт із трьома способами використання:

  • Вбудований режим встановлює пакет Composer у Laravel-застосунок, що володіє workflow, і читає його стійкий стан у процесі застосунку.
  • Власний сервісний режим запускає опублікований образ durableworkflow/waterline та читає стан окремого Server через PHP SDK і публічний Server API. Дистрибутив Server не містить і не обслуговує Waterline.
  • Cloud Managed Waterline є інтерфейсом оператора в межах простору імен, включеним до Durable Workflow Cloud. Cloud обслуговує Managed Waterline та runtime простору імен за ним.

Вбудований і власний сервісний режими надають той самий основний UI Waterline та сімейства маршрутів оператора /waterline/api/.... Cloud надає можливості оператора через керований інтерфейс. Кожне подання обмежене run свого runtime та простору імен і не об’єднує стан runtime. Для операцій власного Server його API, CLI та операторські інтерфейси SDK доступні незалежно від розгортання Waterline. Використовуйте довідник Server API для власних маршрутів Server і довідник API оператора Waterline для маршрутів Waterline та контрактів відповідей.

Durable Workflow має дві площини спостереження:

ПлощинаДжерело істиниТипові питання
Стійкий станБаза даних workflow та API runtime-власника, проєкції Waterline й експорт історіїЧи почався workflow? Який run поточний? Які signal, update, timer, activity, повторна спроба або помилка зафіксовані? Яка дія оператора зараз безпечна?
Телеметрія worker/runtimeЖурнали worker черг, реєстратори метрик SDK, endpoint Prometheus/OpenMetrics і трасування застосункуЧи worker опитують черги? Скільки тривають завдання? Чи налаштований exporter? Чи власні метрики застосунку вийшли з процесу worker?

Власні метрики, записані кодом activity або worker, зчитуйте з endpoint телеметрії worker. Використовуйте Waterline для зіставлення такого сигналу runtime зі стійкою історією workflow та поточним станом run.

Налаштування worker і клієнтів також відокремлене від інтерфейсу оператора. Під час підключення клієнтів застосунку та worker до runtime-власника простору імен використовуйте згенеровані PHP SDK API, Python SDK API або Rust SDK API разом із мовними посібниками.

Коли телеметрія worker показує повторні claims, змагання пізніх завершень або застряглі оренди, читайте гарантії виконання й ідемпотентність разом із цим посібником. Контракт розрізняє невизначеність транспорту щонайменше один раз і повторні стійкі результати, щоб схожі на дублікати докази не призвели до неправильного операційного висновку.

Панель огляду​

Панель Waterline

Панель показує поточні підсумки, лічильники недавніх run і загальні метрики, щоб одразу побачити рух, затримку чи помилки роботи.

Використовуйте операційні межі оператора для контракту розгортання й операційного посібника: які діагностичні факти блокують трафік, які є рекомендаційними, як факти здоров’я черг поділені між Waterline і телеметрією worker, як перевіряти відновлення проєкцій, експорт та архівування.

Подання workflow​

Деталі workflow Waterline

Деталі workflow показують стійку часову шкалу одного run: activity, signal, timer і дочірні workflow в порядку подій, кожен із входами, виходами й часом.

Розгортання й доступ Waterline​

Вбудований Laravel​

Встановіть Waterline у Laravel-застосунок поруч із пакетом Workflow і виконайте його міграції. Повний посібник встановлення й налаштування наведено в durable-workflow/waterline.

Вбудований режим використовує підключення до бази даних, middleware маршрутів, шлюз автентифікації та пакет Workflow хост-застосунку. Обслуговуйте Laravel-застосунок, його worker черг, scheduler, міграції та ресурси Waterline як одну межу розгортання. Довідник API оператора Waterline містить поточну команду Composer і крок публікації ресурсів.

Служба Waterline​

Опублікований образ містить власні PHP і Laravel runtime. Він не потребує PHP, Composer або пакета Workflow на хості контейнера й ніколи не підключається до бази даних окремого Server.

Цей приклад прив’язує Waterline до loopback порту хоста 8080, зберігає його власний стан UI в іменованому томі й підключає до одного простору імен Server:

export WATERLINE_SERVER_ENDPOINT=https://workflow.example.com
export WATERLINE_SERVER_TOKEN=replace-with-a-server-token

docker run --detach \
--name waterline \
--restart unless-stopped \
--publish 127.0.0.1:8080:8080 \
--volume waterline-data:/data \
--env WATERLINE_SERVER_ENDPOINT \
--env WATERLINE_SERVER_TOKEN \
--env WATERLINE_NAMESPACE=orders \
--env WATERLINE_ACCESS_MODE=read_only \
--env WATERLINE_ALLOW_UNAUTHENTICATED=true \
--env APP_URL=https://waterline.example.com \
durableworkflow/waterline:2.3.1

Відкрийте /waterline через URL-адресу, задану APP_URL. Образ слухає порт контейнера 8080. Задавайте PORT лише за свідомої зміни внутрішнього порту. WATERLINE_PATH змінює типовий префікс URL waterline. Репозиторій також публікує визначення служби Docker Compose з тією самою межею підключення.

Сервісний режим має два незалежні шари автентифікації:

  1. WATERLINE_SERVER_TOKEN — bearer-облікові дані Waterline для викликів PHP SDK до WATERLINE_SERVER_ENDPOINT. Спостереження workflow, worker, черг і розкладів потребує ролі оператора Server. Здоров’я Server та метрики оператора можуть потребувати ролі admin.
  2. Доступ браузера й Waterline API є зовнішньою межею розгортання. Самодостатній образ не має каталогу користувачів хост-застосунку Laravel. Тому WATERLINE_ALLOW_UNAUTHENTICATED=true допустимий лише за reverse proxy з автентифікацією або на приватному інтерфейсі, як прив’язка loopback вище. Залишайте false, доки така зовнішня межа автентифікації не налаштована.

Задайте WATERLINE_NAMESPACE відповідно до простору імен, який оператори мають переглядати. Waterline надсилає його з кожним запитом SDK. WATERLINE_ACCESS_MODE=read_only є типовим і блокує зміни в Waterline. Використовуйте operator лише з токеном Server, авторизованим для потрібних команд.

Том /data містить збережені подання Waterline, налаштування відображення й стан runtime Laravel. За типових налаштувань він містить файлову базу SQLite /data/waterline.sqlite. Він ніколи не містить історії workflow Server. Використовуйте DATABASE_URL або звичайні DB_*, якщо власний стан Waterline має зберігатися в MySQL чи PostgreSQL.

Здоров’я й метрики​

Ці перевірки відповідають на різні питання:

ІнтерфейсЩо доводить
GET /upПроцес HTTP Waterline запустився й відповідає на запити. Docker health check образу використовує цей маршрут.
GET /waterline/api/v2/healthWaterline може зібрати здоров’я Server у межах простору імен, реєстрацію worker та докази черг завдань через PHP SDK.
GET /waterline/api/statsПідсумки панелі та огляд оператора на основі Server, який використовує Waterline.
GET /api/system/health і GET /api/system/operator-metrics на ServerВласні контракти здоров’я й оператора Server, незалежні від Waterline.

/waterline/api/stats є JSON оператора, а не endpoint збору Prometheus. Метрики SDK worker, журнали, трасування й власна телеметрія застосунку надходять із процесів worker. Здоровий /up за недоступної відповіді здоров’я чи stats Waterline вказує на підключення Server, авторизацію, простір імен або можливості SDK, а не падіння процесу Waterline.

Видимість workflow і дії оператора​

У сервісному режимі списки, деталі обраного run, експорт історії, розклади, статус worker, докази черг завдань, signal, update, query, відновлення, скасування, припинення та архівування проєктуються з налаштованого окремого Server через PHP SDK. Форми маршрутів Waterline відповідають довіднику API оператора Waterline, а базові контракти Server описані в довіднику Server API.

Waterline показує лише налаштований простір імен і run підключеного Server. Вбудовані run залишаються видимими через своє вбудоване розгортання Waterline, а run Server — через сервісне розгортання або власні інтерфейси Server. Зміна backend Waterline не мігрує та не об’єднує run.

Межі діагностики​

СимптомЩо перевірити
Контейнер завершується до обслуговування /upОбов’язковий WATERLINE_SERVER_ENDPOINT, доступний для запису /data, допустимий PORT, налаштування бази даних і обмежені журнали міграцій запуску.
Подання на основі Server повертає 401 або 403WATERLINE_SERVER_TOKEN і його роль Server. Відмова зовнішнього доступу Waterline є окремим питанням proxy або WATERLINE_ALLOW_UNAUTHENTICATED.
Маршрут зміни повертає waterline_read_onlyЗалиште лише читання або явно задайте WATERLINE_ACCESS_MODE=operator. Токен Server усе одно має авторизувати команду.
Очікувані workflow відсутніWATERLINE_NAMESPACE, endpoint Server і runtime, який прийняв запуск. Waterline не шукає в інших просторах імен чи вбудованих runtime.
/up успішний, але здоров’я, stats або подання повідомляє недоступну можливістьБезпосередньо перевірте endpoint Server через API чи CLI, потім ролі токена й наявність потрібного методу в опублікованому наборі Waterline/PHP SDK.
Маршрут каталогу служб повідомляє backend_capability_unavailableСервісний режим не відтворює вбудований каталог служб Waterline між просторами імен. Для цієї можливості використовуйте власні endpoint служб і API підключеного Server.
Власної метрики немає в WaterlineПерегляньте exporter метрик worker. Waterline повідомляє стійкі факти оператора, а не довільні метрики процесу.

Cloud Managed Waterline​

Клієнти Cloud відкривають Cloud Managed Waterline з керованого інтерфейсу оператора в межах простору імен. Вони не розгортають і не налаштовують Waterline, Server, PHP чи внутрішні endpoint і не мають другого входу Waterline. Інструкції власного образу, WATERLINE_*, токена Server, бази даних і зовнішньої автентифікації вище не застосовуються до цього шляху.

Автентифікація Cloud визначає ідентичність оператора. Авторизація організації, проєкту, середовища та простору імен Cloud визначає область Managed Waterline, доступну цій ідентичності. У її межах оператори можуть переглядати списки й пошук workflow, деталі run та стійку історію, здоров’я простору імен і дії, підтримувані їхньою роллю. Керований інтерфейс обмежений обраним простором імен і не об’єднує дані інших середовищ або просторів імен.

Зміни обмежені ролями. Cloud приписує кожну підтримувану зміну оператора автентифікованому діячу Cloud в аудиті, а отриманий стійкий перехід workflow залишається видимим в історії workflow. Наприклад, успішне архівування приписується в аудиті Cloud та записує стійку подію історії WorkflowArchived. Операторам не потрібні приватні облікові дані runtime або знання його внутрішнього розгортання для використання цього інтерфейсу.

API списку й деталей​

Списки Waterline (/waterline/api/flows/{bucket}) та endpoint деталей обраного run (/waterline/api/flows/{id}) повертають типізовані контракти JSON для прямого використання власними панелями чи скриптами. Довідник API оператора Waterline описує endpoint, сімейства полів обраного run, експорт історії, доступні дії, розклади, збережені подання, налаштування та контракт дій оператора.

Контракт доступних дій​

Waterline додає версійований контракт доступних дій до рядків списку, відповідей деталей обраного run та експорту історії. Для полів нижче ідентифікатором контракту є actionability_contract.schema = waterline.actionability і actionability_contract.version = 1.

actionability рівня run відповідає, чи можна відновити обраний run:

ПолеЗначення
repair_stateОдне з repairable, blocked, not_needed або unknown.
repairableBoolean-скорочення repair_state = repairable.
blocked_reasonСтабільний код причини за repair_state = blocked.
status_bucketКатегорія Waterline, що визначила рішення рівня run.
closed_reasonСтійка причина закриття закритого run.
task_problemЧи Waterline виявив проблему завдання run.
diagnostic_only_evidenceTrue, якщо хоча б один дочірній рядок доказів інформативний, але не є джерелом відновлення виконання.

Рядки доказів у activities, waits, timers, exceptions, logs і записи часової шкали/експорту також можуть мати власний блок actionability:

ПолеЗначення
stateactionable, якщо рядок є допустимим джерелом відновлення, інакше diagnostic_only.
repair_sourceTrue лише для рядків із джерелом істини, придатним до відновлення.
diagnostic_onlyTrue, якщо рядок не можна використовувати як джерело продовження виконання.
history_authorityДжерело істини, як typed_history, mutable_open_fallback, failure_row_fallback або unsupported_terminal_without_history.
history_unsupported_reasonСтабільний код причини непідтримуваної запасної історії.

Автоматизація має визначати доступність відновлення, продовження та replay за actionability.repair_state, actionability.repairable і actionability.repair_source рівня рядка. Рядок із diagnostic_only = true ніколи не є стійким джерелом продовження, навіть якщо містить корисні метадані помилки чи запасного джерела. Рядки з history_authority = unsupported_terminal_without_history є лише діагностичними доказами: пояснюють блокування run, але не доводять достатньої типізованої історії для безпечного відновлення поступу.

Дії площини керування з Waterline​

Оператори можуть скасувати, припинити, відновити й архівувати workflow безпосередньо з деталей. Кожна дія відповідає POST для того самого ID run і повертає 200 з отриманим станом або 409, коли дія недопустима для поточного стану run.

У сервісному режимі Waterline передає підтримувані команди через PHP SDK. Для змін потрібні WATERLINE_ACCESS_MODE=operator та облікові дані Server, авторизовані для команди. За відсутності Waterline оператори завжди можуть використовувати Server API або CLI безпосередньо.

У Cloud Managed Waterline кожну підтримувану зміну обмежують роль Cloud та авторизація простору імен, а автентифікована ідентичність Cloud визначає її автора в аудиті. Клієнти не налаштовують облікові дані Waterline→Server для керованого інтерфейсу.

  • Гарантії виконання й ідемпотентність пояснюють контракт replay, повторних спроб, спливання оренди та стійких результатів, що визначає докази оператора.
  • Операційні межі оператора поєднують здоров’я, стан черг, відновлення проєкцій, експорт, архівування та очікування топології в один контракт оператора.
  • Помилки й відновлення пояснюють вичерпання повторних спроб, помилки non-retryable, тайм-аути й поведінку відновлення за фактами панелі.
  • Розробка за допомогою AI називає контракти Waterline, CLI, MCP та читання LLM, які агенти мають використовувати для діагностики стану workflow.