Rundeck系情報まとめ
自分の会社のシステムでは一部Rundeckを採用している。 主に今までcrontabでキックしていたものを管理しやすくするためである。
cronで不満だった点
- そのままではジョブが実行中なのか、完了したのか、異常終了したのかが把握しにくい点(別途ログ出しや監視が必要になる)
- 失敗して再実行するオペレーションが面倒(サーバにログインしてコマンドを叩いて実行する必要有)
cronに比べた利点
- 実行履歴が残る(実行時間も記録される)
- GUIで実行履歴を調べれる。
- GUI(Webブラウザ)で手動実行できる。(休日深夜の対応がしやすい)
- 障害時や完了時などにメールやSlackへの通知を飛ばせる。(cronはデフォルトのメール通知があるがほぼ使われていない)
- ある一定以上の時間がかかっている場合に通知を飛ばすことができる。
- 障害時にリトライができる
- 直近の予定時刻がわかる(たとえば、crontabだと一分後に実行させたいつもりで記述しても、記述ミスで一分後に実行されていなかった、、、ということもあるが、Rundeckだと大丈夫)
自社の環境
AWS利用(AmazonLinuxのEC2) Webサーバ用のEC2(t2.medium)とジョブ実行用のEC2(r4.large:こちらはメモリをやや多めにしている)を別に立てている。 今後ジョブが増えてきたら、ジョブ実行用のEC2を増加予定。 メタデータはMySQLのRDSに保存。
/etc/rundeck/rundeck-config.properties と /etc/rundeck/framework.properties を色々書き換える必要あり。(後述のサイト参照)
有用な情報サイトまとめ
dev.classmethod.jp 基本的にここのサイトの通りにセットアップ。JDKは1.8系の最新のを利用
やった設定
実行ログが大量になってくるとパフォーマンスが落ちるらしい。
上記サイトに従い、ALTER INDEX文をDBで実行して、管理テーブルにインデックスをはった。
もしくは、
Rundeck はじめました - ゆるふわカウンターアタック の 「ジョブが増えてくるとDBサーバーがCPUリークする」という記述を参照
あと、Web画面での管理作業実行中にすぐにタイムアウトになって不便なため
Faq · rundeck/rundeck Wiki · GitHub の How do I change the default session timeout duration? を参考にして、 長い時間に設定した。