SlideShare a Scribd company logo
1 of 53
Download to read offline
HIGHBATCH
HighBatch is batch scheduling system.
https://github.com/nobuhito/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
セッティング
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

What's hot

Phpのレガシーコードをrubyで焼き変えてみた
Phpのレガシーコードをrubyで焼き変えてみたPhpのレガシーコードをrubyで焼き変えてみた
Phpのレガシーコードをrubyで焼き変えてみたAkira Kaneda
 
最近流行りのビルドツールとは
最近流行りのビルドツールとは最近流行りのビルドツールとは
最近流行りのビルドツールとはTakahiro Maki
 
よりよいPHPUnitの実行方法を求めて
よりよいPHPUnitの実行方法を求めてよりよいPHPUnitの実行方法を求めて
よりよいPHPUnitの実行方法を求めてAkio Ishida
 
Blenderを用いたリグ転送実験
Blenderを用いたリグ転送実験Blenderを用いたリグ転送実験
Blenderを用いたリグ転送実験Kazuma Hatta
 
PHPデプロイツールの世界
PHPデプロイツールの世界PHPデプロイツールの世界
PHPデプロイツールの世界Yuuki Takezawa
 
jenkins先生にライブラリの更新をお願いする
jenkins先生にライブラリの更新をお願いするjenkins先生にライブラリの更新をお願いする
jenkins先生にライブラリの更新をお願いするYuichi Tanaka
 
サバフェスLt
サバフェスLtサバフェスLt
サバフェスLt宗 大栗
 
Word pressのテーマは firephpでハックすれば 良かったのか
Word pressのテーマは firephpでハックすれば 良かったのかWord pressのテーマは firephpでハックすれば 良かったのか
Word pressのテーマは firephpでハックすれば 良かったのかHisateru Tanaka
 
PHP x AWS でスケーラブルなシステムをつくろう
PHP x AWS でスケーラブルなシステムをつくろうPHP x AWS でスケーラブルなシステムをつくろう
PHP x AWS でスケーラブルなシステムをつくろうTaiji INOUE
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろうKota Mizushima
 
Laravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作るLaravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作るinfinite_loop
 
Html5 でアプリを作るということ
Html5 でアプリを作るということHtml5 でアプリを作るということ
Html5 でアプリを作るということNaruto TAKAHASHI
 
はじめてLaravelさわった 第86回php勉強会
はじめてLaravelさわった 第86回php勉強会はじめてLaravelさわった 第86回php勉強会
はじめてLaravelさわった 第86回php勉強会Osamu Kawasaki
 
Tizen web app について調べたよ
Tizen web app について調べたよTizen web app について調べたよ
Tizen web app について調べたよNaruto TAKAHASHI
 
今日から始めるLaravel
今日から始めるLaravel今日から始めるLaravel
今日から始めるLaravelMasaru Matsuo
 
Goで書くNeoVimプラグイン - OpenAppLab Aizu LT feat. CyberAgent
Goで書くNeoVimプラグイン - OpenAppLab Aizu LT feat. CyberAgentGoで書くNeoVimプラグイン - OpenAppLab Aizu LT feat. CyberAgent
Goで書くNeoVimプラグイン - OpenAppLab Aizu LT feat. CyberAgentReo Yamada
 
誰でも出来るosxでのローカルなウェブ開発環境構築
誰でも出来るosxでのローカルなウェブ開発環境構築誰でも出来るosxでのローカルなウェブ開発環境構築
誰でも出来るosxでのローカルなウェブ開発環境構築Hiroshi Yamato
 
SPAJAMでやったこと
SPAJAMでやったことSPAJAMでやったこと
SPAJAMでやったことHiroto Imoto
 
PHPUnit でテスト駆動開発を始めよう
PHPUnit でテスト駆動開発を始めようPHPUnit でテスト駆動開発を始めよう
PHPUnit でテスト駆動開発を始めようYuya Takeyama
 
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみるオープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみるKenichiro MATOHARA
 

What's hot (20)

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

Viewers also liked

Chrome osとgo言語からgoogleの今後を妄想してみる
Chrome osとgo言語からgoogleの今後を妄想してみるChrome osとgo言語からgoogleの今後を妄想してみる
Chrome osとgo言語からgoogleの今後を妄想してみるMasakazu Muraoka
 
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)deris0126
 
Eureka go 2015_12_12
Eureka go 2015_12_12Eureka go 2015_12_12
Eureka go 2015_12_12matsuo kenji
 
Golang, make and robotics #gocon
Golang, make and robotics #goconGolang, make and robotics #gocon
Golang, make and robotics #goconHideyuki TAKEI
 
Go言語と過ごした一週間
Go言語と過ごした一週間Go言語と過ごした一週間
Go言語と過ごした一週間Shintaro Kitayama
 
cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...
cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...
cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...Hidenori Takeshita
 
alphawing meets heroku
alphawing meets herokualphawing meets heroku
alphawing meets herokuKyosuke Kameda
 
マイクロサービスにおけるクエリー言語について
マイクロサービスにおけるクエリー言語についてマイクロサービスにおけるクエリー言語について
マイクロサービスにおけるクエリー言語についてsz yudppp
 
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会Satoshi Noda
 
ISUCON2015 PHPで予選を戦ってみた
ISUCON2015 PHPで予選を戦ってみたISUCON2015 PHPで予選を戦ってみた
ISUCON2015 PHPで予選を戦ってみたKen Gotoh
 
勉強会への一歩を踏み出すために
勉強会への一歩を踏み出すために勉強会への一歩を踏み出すために
勉強会への一歩を踏み出すためにAkihiko Horiuchi
 
エンジニアと椅子
エンジニアと椅子エンジニアと椅子
エンジニアと椅子m1sogi
 
Jenkins study 7 2013-01-28
Jenkins study 7 2013-01-28Jenkins study 7 2013-01-28
Jenkins study 7 2013-01-28Ato ARAKI
 
ちょっとだけさわってみる Go言語
ちょっとだけさわってみる Go言語ちょっとだけさわってみる Go言語
ちょっとだけさわってみる Go言語Satoshi Noda
 
Gunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http urlGunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http urlInnami Satoshi
 

Viewers also liked (20)

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

Similar to HighBatch

公開型CMSとしてのTrac
公開型CMSとしてのTrac公開型CMSとしてのTrac
公開型CMSとしてのTracKazuya Hirobe
 
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書くLinuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書くTetsuyuki Kobayashi
 
OpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かすOpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かすKUNITO Atsunori
 
Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践Kazuto Kusama
 

Similar to HighBatch (6)

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

HighBatch