JobSchedulerユーザカンファレンス2016 LT ChatOpsでジョブ管理自動化

17
ジョブ管理ChatOps簡単自動化 TIS株式会社 池田 大輔

Transcript of JobSchedulerユーザカンファレンス2016 LT ChatOpsでジョブ管理自動化

Page 1: JobSchedulerユーザカンファレンス2016 LT ChatOpsでジョブ管理自動化

ジョブ管理もChatOpsで簡単自動化

TIS株式会社池田 大輔

Page 2: JobSchedulerユーザカンファレンス2016 LT ChatOpsでジョブ管理自動化

Hello!I am Daisuke IKEDA (@ike_dai)TIS Inc. OSS Promotion Office.

Zabbix Specialist

Page 3: JobSchedulerユーザカンファレンス2016 LT ChatOpsでジョブ管理自動化

ChatOps?運用(Operations)の現場において重要なのは

コミュニケーション 自動化

Page 4: JobSchedulerユーザカンファレンス2016 LT ChatOpsでジョブ管理自動化

JobScheduler APIJobSchedulerをプログラマブルに操作するためのインタフェース

内部API 外部API

・各ジョブの中の処理から JobSchedulerを制御

利用例)- ジョブ稼働状況に応じた実行スケジュール変更

- ジョブ稼働状況に応じたジョブの追加実行

・外部ツールからJobSchedulerを制御

利用例)- 監視ツールによる結果に基づいたジョブ実行

- ワークフローツールと連動したジョブ実行

Page 5: JobSchedulerユーザカンファレンス2016 LT ChatOpsでジョブ管理自動化

内部API● 各ジョブの中の処理からJobSchedulerを制御

● Java,JavaScript,Perl,VBScript,PowerShell等、ジョブ実行がサポートされ

ている言語からの呼び出しが可

1ジョブ処理の内部での処理フロー

spooler_init spooler_open spooler_process spooler_close spooler_on_success spooler_on_errorspooler_exit

各フローの中でJobSchedulerに対する操作が自由に可能

var order = spooler_task.order;

order.run_time.xml =

"<run_time><period single_start='15:00'/></run_time>";

ジョブの中で実行時間 (run_time)を指定する例

Page 6: JobSchedulerユーザカンファレンス2016 LT ChatOpsでジョブ管理自動化

外部API● 外部ツールからJobSchedulerを制御

● XMLベースのリクエストをHTTPプロトコルで送付

● JOC上でできる操作は基本的にすべてAPI経由で実行可

ジョブの実行ジョブの実行履歴の確認ジョブの実行時のログの情報確認ジョブの定義情報の確認ジョブチェインに対するオーダーの発行 (ジョブチェインの実行 )各種定義の更新など

http://www.sos-berlin.com/doc/en/scheduler.doc/xml_commands.xml

Page 7: JobSchedulerユーザカンファレンス2016 LT ChatOpsでジョブ管理自動化

外部API利用方法

$ curl -X POST http://hostname:4444 -d “<start_job job=’job1’ after=’600’ />”

基本的な呼び出し方

例)ジョブを10分後にスタートさせたい場合

リクエスト送付先URL JOCのURL (例: http://hostname:4444)

メソッド POST

POSTデータ XML形式のデータ

Page 8: JobSchedulerユーザカンファレンス2016 LT ChatOpsでジョブ管理自動化

API充実しているけどクライアントライブラリが・・

Page 9: JobSchedulerユーザカンファレンス2016 LT ChatOpsでジョブ管理自動化

公式で提供されているのはPHP用のライブラリのみ

https://kb.sos-berlin.com/display/PKB/How+to+communicate+with+JobScheduler+from+PHP+scripts

Page 10: JobSchedulerユーザカンファレンス2016 LT ChatOpsでジョブ管理自動化

I tried!

Page 11: JobSchedulerユーザカンファレンス2016 LT ChatOpsでジョブ管理自動化

Golang

Node.js

https://github.com/ike-dai/go-jobscheduler

https://github.com/ike-dai/node-jobscheduler

Page 12: JobSchedulerユーザカンファレンス2016 LT ChatOpsでジョブ管理自動化

Hubot

GitHub社が開発しているNode.js製ChatOps用ツール

・多数のアダプター対応(Slack, HipChat, Twitter, Skype等)・会話の流れを保持するBrain機能(メモリ保持, Redis, File等)

SlackHipChat・・・

HubotHuman

communicate interpret

Services

Tools

operate

Page 13: JobSchedulerユーザカンファレンス2016 LT ChatOpsでジョブ管理自動化

Hubot

GitHub社が開発しているNode.js製ChatOps用ツール

・多数のアダプター対応(Slack, HipChat, Twitter, Skype等)・会話の流れを保持するBrain機能(メモリ保持, Redis, File等)

SlackHipChat・・・

HubotHuman

communicate interpret

Services

Tools

operate

Page 14: JobSchedulerユーザカンファレンス2016 LT ChatOpsでジョブ管理自動化

node-jobschedulerを活用し、

対話に基づくJobScheduler連携自動化サンプルhttps://github.com/ike-dai/hubot-jobscheduler

Hubot-JobScheduler

hubot set url http://hostname:4444

JobSchedulerhubot start job job1

OK set http://hostname:4444

brain: http://hostname:4444

OK start job1 <start_job job=”job1”/>

Page 15: JobSchedulerユーザカンファレンス2016 LT ChatOpsでジョブ管理自動化

Hubot-JobScheduler導入方法

$ npm install hubot-jobscheduler$ vim external-scripts.json

[ "hubot-diagnostics", "hubot-help", "hubot-heroku-keepalive", "hubot-google-images", ・・・略

"hubot-jobscheduler"]

Page 16: JobSchedulerユーザカンファレンス2016 LT ChatOpsでジョブ管理自動化

Conclusion

Let’s try !

運用業務も楽しく、プログラムで自動化

Page 17: JobSchedulerユーザカンファレンス2016 LT ChatOpsでジョブ管理自動化

Thanks!Any questions?

You can find me at @ike_dai & [email protected]