Databricks Keep-Alive Workers

DevOps

概要

Databricks-keepaliveは、Databricks上で稼働するアプリやジョブを常時稼働させるためのCloudflare Workers用スクリプトです。指定したDatabricksワークスペースに対してAPIを用いて定期的に状態確認を行い、停止しているリソースがあればAPI経由で再起動します。軽量なJavaScriptで実装されており、CloudflareのWorkersに貼り付けるだけで簡単に導入できます。オプションでTelegram通知を設定でき、再起動やエラー発生時に通知を受け取れます。

GitHub

リポジトリの統計情報

  • スター数: 11
  • フォーク数: 1
  • ウォッチャー数: 11
  • コミット数: 19
  • ファイル数: 3
  • メインの言語: JavaScript

主な特徴

  • Cloudflare Workers向けの軽量なJavaScriptワーカーで構成、簡単にデプロイ可能。
  • DatabricksのREST APIを利用してアプリ/クラスタの状態確認と自動再起動を実行。
  • Telegram Bot経由の通知に対応し、再起動やエラーをリアルタイムで受け取れる(任意設定)。
  • 環境変数(ホスト、トークン等)の設定で複数環境にも対応しやすい設計。

技術的なポイント

このプロジェクトはCloudflare Workers上で定期実行させる用途を想定した単一スクリプト(_worker.js)を提供しています。主な技術要素は以下の通りです。

  • Databricks REST APIの利用:Workersからfetchを使ってDatabricks Workspaceのホストに対してHTTPリクエストを送信し、アプリケーション/クラスタの状態取得や起動APIを呼び出します。認証にはPersonal Access Tokenを使用し、AuthorizationヘッダでBearerトークンを渡す設計です。
  • スケジューリング:CloudflareのCron Triggersや定期アクセスを利用して一定間隔でワーカーを起動し、稼働確認と必要時の再起動を行います。Workersの短い実行時間と軽量性を活かし、オーバーヘッドを最小化する作りです。
  • 通知連携:Telegram Bot APIへのPOSTを組み込み、再起動アクション成功や失敗、例外発生時にチャットIDへメッセージを送れるように実装されています。通知は任意設定のため、運用形態に応じて有効化できます。
  • 設定管理:スクリプトは外部にハードコーディングせず、Cloudflare Workersの環境変数(Secrets / Variables)にDatabricks Host、Token、通知用トークン等を置いて安全に運用することが想定されています。これはトークン漏洩リスク低減や環境差分の切り替えを容易にします。

実運用に際してはAPIレート制限やエラーハンドリング、ワーカーのタイムアウト(実行時間制限)に注意が必要です。大量のアプリを扱う場合は並列処理やリトライ戦略、バックオフの実装を検討すると良いでしょう。また、Databricks側の起動に時間がかかるケースがあるため、再起動リクエストを投げた後の状態確認ロジックを十分に設計することが重要です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • LICENSE: file
  • README.md: file
  • _worker.js: file

まとめ

Cloudflare Workersで手軽にDatabricksの稼働監視と自動復旧を実現する実用的なワークフロー。

リポジトリ情報:

READMEの抜粋:

Databricks Keep-Alive Workers 部署说明.

这个 Worker 脚本用于监控和自动重启 Databricks App,确保它们保持运行状态。

部署指南

1. 准备工作

在部署之前,你需要获取以下信息:

  1. Databricks 工作区 Host: 例如 https://abc-123456789.cloud.databricks.com
  2. Databricks 访问 Token: 用于 API 访问的个人访问令牌,点击右上角用户设置-选择”Developer” -> “Access Tokens”生成新的访问令牌
  3. (可选) Telegram BOT Token: 用于发送通知的 Telegram Bot 令牌
  4. (可选) Telegram Chat ID: 接收通知的聊天caht id

2. 部署

  1. 登录你的cloudflare,创建一个新的workers,名称随意,编辑代码,删除原示例代码
  2. 打开此项目的_worker.js文件,复制代码粘贴到workers…