Azure Logic Apps StandardのStopped/Startedログとは?JobHost・Service Busリスナー・Always On設定と監視で業務影響を防ぐ

Azure Logic Apps Standard を運用していると、Application Insights のトランザクション検索やトレースで「Logic Apps JobHost」「runtime environment」「Service Bus リスナー」「workflow」に対する Stopped/Started が、ほぼ毎日(とくに夜間)に記録されることがあります。本記事では、それが正常挙動なのか、Stopped の間に何が止まるのか、Always On の設定場所、そして運用で“早期に気づく”監視・通知の作り方まで、現場目線で整理します。

目次

まず結論:Stopped/Started は多くの場合「正常」だが、影響が出るケースもある

Stopped/Started のトレースは、結論から言うと プラットフォーム側の通常のライフサイクル(再起動・入れ替え) を示していることが多く、必ずしも障害や恒久停止を意味しません。App Service/Logic Apps のランタイムが、メンテナンスやスケーリング、ヘルスチェック等の都合でプロセスを入れ替えると、ホストやリスナーが一度停止し、再起動・再接続するために Stopped→Started が残ります。

ただし、ログが「正常」であっても、タイミング次第では 短時間の処理遅延 や、再接続までの 取りこぼしに見える現象(実際は遅延) が起きることがあります。業務影響が疑われる日は、ログだけでなく、周辺メトリクスや実行履歴との突き合わせが重要です。

よくある疑問結論(運用での見方)次にやること
Stopped/Started は異常?多くは正常(プラットフォームの入れ替え)頻度・時間帯・継続時間を観測し、相関がある日だけ深掘り
Stopped の間、Logic Apps はオフライン?実行ホスト/リスナーの再起動中は処理が止まる可能性ありStopped→Started の間隔、実行失敗/遅延、バックログ増加を確認
Always On はどこで設定?Logic Apps Standard の基盤(App Service)設定で有効化「構成/General settings」等で Always On を ON(プラン条件も確認)
事前/早期に把握する通知は?Azure Monitor / App Insights のログアラート+Service Health が有効アラート条件と通知先(Action Group)を整備し、運用基準を決める

Stopped/Started の正体:どのコンポーネントが「止まって」「再開した」のか

Application Insights 上で見える Stopped/Started は、同じ言葉でも対象によって意味合いが変わります。まずは用語の対応関係を整理すると、切り分けが一気に楽になります。

ログに出がちな対象ざっくり役割Stopped/Started が出る典型要因影響の出方(一般的)
Logic Apps JobHostワークフロー実行を動かすホスト(実行ランタイムの中核)ホストプロセスのリサイクル、更新、ヘルスチェックによる入れ替え停止中はトリガー処理や実行が遅延/一時停止しやすい
runtime environmentLogic Apps Standard の実行環境(基盤側の実体)App Service 側の再起動・スケール・メンテナンス環境再起動中は全体に影響(短時間)
Service Bus リスナーService Bus トリガー等の受信待機・接続管理ホスト再起動、接続の貼り直し、負荷変動に伴う再確立停止中は受信が一時停止し、バックログが増えることがある
workflow個々のワークフロー(ロジック)実行単位ホスト再起動に伴う再ロード、設定反映、トリガー再初期化そのワークフローだけ遅延/一時停止のように見えることがある

ポイント:Stopped/Started は「止められた」よりも「入れ替え(再起動)した」と捉える方が、運用判断を誤りにくくなります。

なぜ業務時間外に多いのか:夜間に起きやすい“入れ替え”の理由

「ほぼ毎日、主に業務時間外」というパターンは、運用現場でよく見かけます。理由はひとつではありませんが、代表的には次のような条件が重なります。

  • 基盤のメンテナンス:夜間帯に行われることがあるため、入れ替えが集中しやすい
  • スケールアウト/スケールイン:負荷が下がるとインスタンス数が減り、ホストやリスナーが貼り直される
  • ヘルスチェックによるプロセス入れ替え:軽微な不調でも“健全化”のために再起動が走ることがある
  • アイドル状態(アクセス/処理が少ない):Always On が無効だと、スリープやコールドスタートに近い挙動が起きやすい

つまり、Stopped/Started の頻度だけで即「障害」とは断定せず、発生時刻・継続時間・同時に出る別ログ を合わせて判断するのが安全です。

「Stopped の間はオフライン?」に対する実務的な答え

質問として最も重要なのが、「Stopped と出ている間、Logic Apps は実際に止まっているのか?」です。実務的には次のように捉えると混乱が減ります。

  • Stopped の対象が JobHost / runtime environment / リスナーの場合:処理が一時停止(または遅延)する可能性はあります。特にトリガーは“待ち受け”が切れるため、メッセージ取り込みが止まって見えます。
  • ただし多くは短時間で Started が続く:自動で再起動し、再接続される前提の動きです。Stopped の文字だけで長時間停止と決めつけないのが重要です。
  • Stopped の間に発生したイベントが“消える”とは限らない:Service Bus のようなキュー型は、受信側が止まってもメッセージは残るため、再開後に処理が追いつくことが多いです(その代わり遅延やバックログ増加が起きる)。

特に Service Bus トリガーの運用では、Stopped/Started の瞬間に次のような“現象”が起きやすいため、観測ポイントを決めておくと切り分けが速くなります。

現象起きやすいタイミング見え方実務的な判断
処理遅延Stopped〜Started の間、再接続直後「受信が止まった」ように見えるバックログ増加→Started 後に回復するなら正常寄り
一部実行の失敗再起動瞬間に実行中の処理があるタイムアウト、接続エラーなどが混ざる再試行で復旧するか、失敗が連鎖していないかを確認
重複処理に見える再試行・ロック切れなどが絡む同一メッセージ相当が複数回走るワークフローを冪等に設計(同一入力でも安全)する

業務影響が疑われる場合の確認ポイント:見る順番がすべて

「Stopped/Started は通常動作」として扱いつつも、業務影響と時間帯が一致した日があるなら、次の順番で確認すると原因特定が早くなります。ここは運用手順として、そのままチェックリスト化するのがおすすめです。

Stopped→Started の“間隔”と“頻度”をまず見る

  • Stopped と Started の差分(何分止まっていたか)
  • 短時間に何回繰り返しているか(再起動ループの兆候)
  • 同じ時刻帯に複数コンポーネントが同時に止まっていないか(環境全体の入れ替えの可能性)

App Service / 基盤側の“再起動・リサイクル”痕跡を突き合わせる

Logic Apps Standard は基盤として App Service を使うため、まずは基盤側のイベント(再起動・スケール)を確認します。見る場所の例は次のとおりです。

  • Azure ポータルのアクティビティログ:該当リソース(Logic Apps Standard / App Service)で、再起動やスケール関連の操作・イベントが出ていないか
  • 診断ログ:再起動やプラットフォームイベントに近いログが採れているか
  • メトリクス:CPU/メモリのスパイク、インスタンス数の増減、エラー率の跳ね上がりがないか

Logic Apps の実行結果(成功率・遅延・再試行)を確認する

“ログが止まった”ことより、実際に処理結果がどうなったか が最重要です。以下を同じ時間軸で並べるのがコツです。

  • 失敗した実行数(ワークフロー run の失敗)
  • 実行時間の急増(通常より極端に長い run)
  • 再試行回数の増加(外部接続、Service Bus、API 呼び出しなど)

Service Bus 側の“受信できなかった”証拠を確認する

Service Bus トリガーを使っている場合、Stopped/Started は「受信待機が一度切れた」ことを示すことが多いです。このとき Service Bus 側では次のような変化が出ます。

  • Active Messages(アクティブメッセージ) の増加(バックログ)
  • Dead-letter(デッドレター) の増加(処理できない/設定不整合)
  • 失敗要求やサーバーエラーに相当するメトリクスの増加
確認対象見るべき指標(例)判断のヒント
App Service / 基盤CPU、メモリ、インスタンス数、エラー率リソース逼迫→スケールや再起動のトリガーになりやすい
Logic Apps 実行失敗数、実行時間、再試行回数再試行で回復しているなら一過性、失敗が連鎖なら対策優先
Service BusActive/Dead-letter、受信/送信の傾向バックログだけ増え、Started 後に減るなら遅延の可能性が高い

Always On の役割:止まる理由を“ゼロ”にはできないが、夜間の停止を減らせる

Stopped/Started の要因が「アイドル・スリープ系」に寄っている場合、最も手堅い対策が Always On(常時オン) です。

Always On で何が改善するのか

  • アクセスや処理が少ない時間帯でも、アプリのプロセスを起こし続ける
  • 次のイベント到来時に“起動待ち”が起きにくくなり、コールドスタート由来の遅延 を減らせる
  • Service Bus などのリスナーが「待受の再初期化」になりにくくなり、運用上の不安定さを抑えられる

Always On でも残るもの(期待値を合わせる)

Always On は万能ではありません。以下のような プラットフォーム都合の入れ替え は、Always On を有効にしていても起きる可能性があります。

  • メンテナンス
  • スケーリングによるインスタンスの増減
  • ヘルスチェックによる入れ替え
  • アプリ更新・構成変更の反映

Always On の設定場所(Logic Apps Standard)

Logic Apps Standard は App Service 基盤で動作するため、設定は App Service 側(Logic App リソースの設定画面) にあります。ポータル上では概ね次の導線で到達できます。

  • Azure ポータル → 対象の Logic App (Standard)
  • 設定(Settings)→ 構成(Configuration)
  • 全般設定(General settings)付近の Always On を有効化

注意点として、Always On は App Service プランの種類によって利用可否が変わります。一般には Free / Shared では使えず、Basic 以上のプランで有効化できることが多いです(プラン制約は環境により異なるため、まずは現在のプランを確認してください)。

判断材料Always On を有効にする目安期待できる効果注意点
夜間に Stopped/Started が多いアクセス/処理が薄い時間帯に偏っているスリープ由来の停止・遅延の低減メンテナンス由来は防げない
朝一の処理が遅い初回メッセージ受信で遅延が顕著コールドスタートの抑制プランのコスト/仕様を要確認
Service Bus トリガーが重要遅延が許容しづらいワークロード待受の安定化(体感)それでも短時間の入れ替えは起こり得る

“事前 or 早期に気づく”ための監視・通知:おすすめの組み合わせ

受信が止まったように見える問題は、発生してから追うと原因がぼやけやすいのが難点です。そこで、運用としては「プラットフォーム入れ替えの兆候」と「業務影響の兆候」を分けて監視し、通知のノイズを減らすのがコツです。

おすすめの監視設計(全体像)

監視レイヤー狙い具体例通知の考え方
プラットフォーム(Azure 側)計画メンテや広域障害を早く知るService Health / Resource Health のアラート運用チーム全体に通知(情報共有)
基盤(App Service)再起動/スケール/エラー率の異常を検知メトリクスアラート、HTTP 5xx、リソース逼迫しきい値は“業務影響に直結するもの”に絞る
アプリ(Logic Apps 実行)失敗・遅延・再試行の増加を検知失敗した run 数、実行時間の増加最優先で通知(SLA に直結)
トリガー/メッセージ(Service Bus)受信停止・バックログ増加を検知Active/Dead-letter の急増“増え続ける”条件で通知(瞬間的増加はノイズ)

Application Insights で Stopped/Started を“ログアラート化”する例

Stopped/Started 自体は正常でも、以下のような条件なら運用品質を上げるアラートになり得ます。

  • 短時間に何度も繰り返す(再起動ループ)
  • Stopped の継続時間が長い(再開しない、または回復が遅い)
  • Stopped の直後に失敗 run が増える(業務影響の兆候)

ログ検索(Kusto クエリ)の雛形は、例えば次のような形で作れます(環境によりフィールド名が異なるため、まずは実際のログで列名を確認してください)。

traces
| where message has_any ("Stopped", "Started")
| where message has_any ("JobHost", "runtime", "Service Bus", "workflow")
| summarize Count=count() by bin(timestamp, 30m), message
| order by timestamp desc

そして、アラート条件は「Count が一定以上」「特定文字列を含む」「Stopped だけが続く」などにします。通知先は Action Group(メール、Teams 連携、Webhook など)で統一しておくと、運用の属人化を防げます。

“業務影響を早期検知”するアラートの作り方(実践寄り)

Stopped/Started の通知は便利ですが、通知が多すぎると無視されがちです。実務では「影響の兆候」側に寄せたアラートが効きます。

アラート対象推奨条件(例)狙い補足
Logic Apps の失敗実行失敗数が一定回数以上 / 連続失敗業務影響の直接検知通知レベルは高め(当番/即対応)
実行時間の急増通常の P95 を超過し続ける遅延の早期検知「瞬間」ではなく「継続」で判定するとノイズが減る
Service Bus のバックログActive Messages が増え続ける受信停止・処理詰まりの検知閾値はキューのSLAと処理速度から逆算する
Dead-letter の増加短時間で急増設定不整合/処理不能の検知原因はアプリ側だけでなくルール/権限の可能性もある

Stopped/Started に強いワークフロー設計:運用コストを下げる“予防策”

プラットフォームの入れ替えは完全には避けられないため、実務では「入れ替えが起きても事故になりにくい」設計に寄せるのが結果的に強いです。ここは一般論に寄りすぎない範囲で、効果が出やすいポイントをまとめます。

冪等性(同じ入力が来ても安全)を前提にする

Service Bus のようなメッセージ基盤では、再試行やロック切れ等により “同じメッセージが再度処理される” 可能性をゼロにはできません。Stopped/Started が絡むと、その確率が上がる局面があります。以下のいずれか(または複数)を検討すると安定します。

  • 処理対象に 一意キー を持たせ、重複ならスキップする
  • 外部システム更新は Upsert(存在すれば更新) に寄せる
  • “二重実行で壊れる処理” を避け、壊れるなら 排他/ロック を設計する

“止まったら困る”トリガーは、遅延許容度を明文化しておく

Stopped/Started が毎日出ていても、業務側が「夜間の遅延は許容」「朝 10 分の遅延は許容不可」など、許容度が異なることがほとんどです。運用では次を決めておくと、アラート設計と切り分けが楽になります。

  • 許容遅延(例:5分、15分、60分)
  • 許容できないキュー滞留数(例:Active Messages が N を超えたら障害扱い)
  • 当番対応の条件(例:失敗が連続 X 回、または Dead-letter が増加)

Always On+監視+設計の“セット”で効く

Stopped/Started の不安は、単発の設定だけでは完全に消えません。Always On で発生頻度を下げ、監視で早く気づき、設計で事故になりにくくする——このセットが最も再現性があります。

ドキュメントはどこを読めばよいか:調べる順番のおすすめ

「動作を説明したドキュメントがあるか?」という点については、1ページで“Stopped/Started の全て”がまとまっていることは少ない一方で、周辺ドキュメントを押さえると全体像が理解しやすくなります。探すときは、次の順番が実務的です。

  • Azure Logic Apps Standard のアーキテクチャ/ランタイム:標準プランが App Service 基盤で動くこと、ホストの考え方
  • 監視(Application Insights / Azure Monitor):ログ・メトリクス・アラートの考え方、ログアラート(クエリアラート)の作り方
  • App Service の Always On:スリープ抑制、プラン要件、運用上の注意点
  • Service Bus トリガー/受信の挙動:再試行、ロック、デッドレターの基本(“止まったように見える”ときに何が起きるか)
  • Service Health / Resource Health:プラットフォーム起因のイベント通知と、運用の初動判断

まとめ:Stopped/Started を“怖いログ”から“運用の計測点”へ

Logic Apps Standard の JobHost・runtime environment・Service Bus リスナー・workflow に出る Stopped/Started は、基本的に プラットフォーム側の通常ライフサイクル(リサイクル、メンテナンス、スケール、ヘルスチェック) の一部として発生し得るログです。多くは短時間で Started が続き、自動回復する前提の動きで、必ずしも長時間停止を意味しません。

一方で、業務影響と時間帯が重なる場合は「ログが出たか」ではなく、Stopped→Started の間隔、実行失敗・遅延、Service Bus バックログ を同じ時間軸で突き合わせるのが重要です。対策としては、Always On の有効化 による夜間のスリープ系挙動の低減、そして Azure Monitor / Application Insights / Service Bus / Service Health を組み合わせた アラート設計 によって、“起きてもすぐ気づき、影響を最小化する”運用へ寄せることができます。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次