SlideShare a Scribd company logo
HIGHBATCH
HighBatch is batch scheduling system.
https://github.com/nobuhito/HighBatch
HighBatch
HIGHBATCHってなに?
Golang製のTaskスケジューリングシステム
簡単なセットアップで
実行したTaskの結果全てをわかりやすく確認できること
を目指して作成しています
運用中のバッチ処理で問題点はありませんか?
Windowsのタスクで設定してるけど
マウスポチポチがめんどくさい...
Windowsのタスクで設定してるけど
マウスポチポチがめんどくさい...
それ HighBatch 使えばテキスト編集で制御できるよ
機能を使い切れてない。
ライセンス高いのに...
機能を使い切れてない。
ライセンス高いのに...
それ HighBatch だったらOSSだから
Freeだし自分で機能追加も出来るよ
大げさなシステム過ぎて
インストールがめんどくさい...
ってか、いまさらJAVAかよ!!
大げさなシステム過ぎて
インストールがめんどくさい...
ってか、いまさらJAVAかよ!!
それ HighBatch だったらGoだから
バイナリ一つコピペすればいいだけだよ
HighBatchの機能
サーバーやタスク毎に実行履歴を表示
STDOUTとSTDERRORの実行結果を表示
異常終了したタスクの手動実行指示
異常終了した場合にメールにてアラート
サーバーを超えたバッチの順次起動
を、できるだけ運用が簡単になるように
Golangでシンプルに作ってみました
インスパイア元はSensuとJenkins
というとなんとなくイメージ湧きます?
(かなり低機能ですが...)
動作概要
HighBatchはエージェント方式のクラサバシステムで
Masterと呼ぶサーバーとWorkerと呼ぶクライアントから構成
MasterもWorkerもWebサーバーが起動しHTTPで相互通信
通常Masterは一台で、Workerは複数台
(クライアントに複数Workerを起動させることで
複数のMasterに分けることもできるはず...)
MASTER
Taskの指示と実行結果の保存管理を主に担当
Arranger, Logger, Server, Notifier
WORKER
指示されたTaskを実行し結果をMaterに返答
Worker, Logger, Server
HighBatch
セッティング
MASTER
git clone https://github.com/nobuhito/HighBatch.git
cd HighBatch
cp config.toml.sample config.toml
nano config.toml
go get ...
go build main.go
./main
※ Unix系の場合
config.toml
[Master]
  Host = "highbatch" # インストールしたMasterのホスト名とポート番号
  Port = "8081"
[Worker]
  Host = "highbatch" # インストールしたMasterのホスト名とポート番号
  Port = "8081"
  LogLevel = 0    # Loglevel 0:自動 1:Info 2:Alert 3:Error
  IsMaster = true # Masterとして稼働させる場合はTrueのまま
[notify.mailInfo]
  # 異常終了のメール設定
  fromAddress = "from@example.com"
  toAddress = ["to@example.com"]
  host = "example.com"
  port = "25"
下記が表示されたらMasterのインストールは完了
WORKER
1. ターゲットマシン用にビルドした実行ファイルを
任意のフォルダにコピー
2. 設定ファイルがない状態で一度実行
3. 自動でconfig.tomlが作成されるので
UTF8を解釈できるエディタで内容を編集
4. ダブルクリックして再度起動
config.toml
[Master]
  Host = "highbatch" # 先にMasterのホスト名とポート番号
  Port = "8081"
[Worker]
  Host = "highbatch" # 自動で設定されるので特に変更の必要なし
  Port = "8081"      # ポートは任意の番号で
  LogLevel = 0       # Loglevel 0:自動 1:Info 2:Alert 3:Error
  IsMaster = false    # WorkerなのでFalseのまま
下記が表示されたらWorkerのインストールは完了
WINDOWSだからサービスに登録したい?
command にできる win_service_install.bat を実行して、
サービス画面で起動させるだけ(管理者権限が必要)
LINUX?OSX?
daemontoolsとかいろいろあるでしょ?
起動後はWorkerが定期的にMasterと通信を開始
TASKの追加
TaskはMasterサーバーのTasksフォルダに追加
追加されたTaskは定期的にWorkerへ転送されるのでWorker
へ作成する必要なし
Tasks
└─WindowsErrorSample­1
        batch.bat
        spec.toml
上記のサンプルではTaskの名前は WindowsErrorSample-1
になり、 spec.toml の定義を元にTaskを実行
spec.toml
# Taskの概要
description = "Windows batch execute error sample."
# Taskで実行したいコマンドやバッチファイル
cmd = "batch.bat"
# Taskを実行させたいホスト名(複数指定可能)
machine = ["localhost"]
# Taskを実行させたいタイミング(Cron形式で指定)
schedule = "0 0 * * * *"
spec.tomlは必須ファイル(UTF8)
spec.tomlでは以下の内容を設定可能
項目名 内容
description タスクの概要
cmd 実行したいコマンド
schedule 実行したいタイミング(cron形式)
chain 次に実行したいタスクの名前
error 異常終了と判定したい正規表現
onErrorStop 異常終了時は次のタスクを実行しない
実行時はこのフォルダをカレントとして実行されるので
バッチファイル等の指定はここからの相対パスで指定する
管理画面
全バッチの履歴一覧とWorker/Task/Errorのツリー表示
履歴一覧を開くと実行結果を表示
Taskに関連するファイルを表示
いろいろ細かい部分など
リスト表示のマーク
Treeビュー
結果表示1
結果表示2
結果表示3
実行中
足りない機能があったら教えて下さい
https://github.com/nobuhito/HighBatch/issues
https://gitter.im/nobuhito/HighBatch
それでは、よいバッチ管理ライフを!
異常 以上
あっ、ロゴも募集中です。
Batch → バッチ → バチ → 火鉢 → Hibati → HighBatch
なので、熱そうな 火鉢 をロゴに出来たら嬉しいです...

More Related Content

DOCX
資料1
PDF
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
PDF
PHPとJavaScriptの噺
PPTX
Jenkins tips 20161014
PDF
CakePHP(例えば2系)のテスト
PDF
Cake php + php unitによる実践的ユニットテスト
PDF
Jspmとtypescriptで開発する
PPTX
初心者のみるべきNotebookの探し方
資料1
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
PHPとJavaScriptの噺
Jenkins tips 20161014
CakePHP(例えば2系)のテスト
Cake php + php unitによる実践的ユニットテスト
Jspmとtypescriptで開発する
初心者のみるべきNotebookの探し方

What's hot (20)

PDF
Phpのレガシーコードをrubyで焼き変えてみた
PDF
最近流行りのビルドツールとは
PDF
よりよいPHPUnitの実行方法を求めて
PDF
Blenderを用いたリグ転送実験
PDF
PHPデプロイツールの世界
PDF
jenkins先生にライブラリの更新をお願いする
PPTX
サバフェスLt
PDF
Word pressのテーマは firephpでハックすれば 良かったのか
PPTX
PHP x AWS でスケーラブルなシステムをつくろう
PPT
メタプログラミングって何だろう
PDF
Laravel 5.1 LTSでサービスを作る
PPTX
Html5 でアプリを作るということ
PDF
はじめてLaravelさわった 第86回php勉強会
PPTX
Tizen web app について調べたよ
PPTX
今日から始めるLaravel
PDF
Goで書くNeoVimプラグイン - OpenAppLab Aizu LT feat. CyberAgent
PDF
誰でも出来るosxでのローカルなウェブ開発環境構築
PDF
SPAJAMでやったこと
PDF
PHPUnit でテスト駆動開発を始めよう
PDF
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
Phpのレガシーコードをrubyで焼き変えてみた
最近流行りのビルドツールとは
よりよいPHPUnitの実行方法を求めて
Blenderを用いたリグ転送実験
PHPデプロイツールの世界
jenkins先生にライブラリの更新をお願いする
サバフェスLt
Word pressのテーマは firephpでハックすれば 良かったのか
PHP x AWS でスケーラブルなシステムをつくろう
メタプログラミングって何だろう
Laravel 5.1 LTSでサービスを作る
Html5 でアプリを作るということ
はじめてLaravelさわった 第86回php勉強会
Tizen web app について調べたよ
今日から始めるLaravel
Goで書くNeoVimプラグイン - OpenAppLab Aizu LT feat. CyberAgent
誰でも出来るosxでのローカルなウェブ開発環境構築
SPAJAMでやったこと
PHPUnit でテスト駆動開発を始めよう
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
Ad

Viewers also liked (20)

KEY
Chrome osとgo言語からgoogleの今後を妄想してみる
PDF
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
PPTX
Go+revel
PDF
らくちん Go言語
PDF
Eureka go 2015_12_12
PPTX
Github第8章
PDF
Golang, make and robotics #gocon
PDF
Go言語と過ごした一週間
PDF
Goを知る
PDF
cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...
PDF
alphawing meets heroku
PPTX
マイクロサービスにおけるクエリー言語について
PDF
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会
PDF
ISUCON2015 PHPで予選を戦ってみた
PDF
勉強会への一歩を踏み出すために
PDF
Dockerぐらし!
PDF
エンジニアと椅子
PDF
Jenkins study 7 2013-01-28
PDF
ちょっとだけさわってみる Go言語
PPTX
Gunosy Go lang study #6 net http url
Chrome osとgo言語からgoogleの今後を妄想してみる
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Go+revel
らくちん Go言語
Eureka go 2015_12_12
Github第8章
Golang, make and robotics #gocon
Go言語と過ごした一週間
Goを知る
cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...
alphawing meets heroku
マイクロサービスにおけるクエリー言語について
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会
ISUCON2015 PHPで予選を戦ってみた
勉強会への一歩を踏み出すために
Dockerぐらし!
エンジニアと椅子
Jenkins study 7 2013-01-28
ちょっとだけさわってみる Go言語
Gunosy Go lang study #6 net http url
Ad

Similar to HighBatch (6)

PPTX
俺とGitHub
PDF
20121205 jjbug
PPT
公開型CMSとしてのTrac
PDF
Linuxのユーザーランドをinitから全てまるごとgolangで書く
PDF
OpenWhisk - Docker action で MeCab を動かす
PDF
Cloudn PaaSチームのChatOps実践
俺とGitHub
20121205 jjbug
公開型CMSとしてのTrac
Linuxのユーザーランドをinitから全てまるごとgolangで書く
OpenWhisk - Docker action で MeCab を動かす
Cloudn PaaSチームのChatOps実践

HighBatch