RundeckでMySQL利用時に作成されるテーブル内容調査

皆さま、どうもこんばんわ(^o^)

RundeckをインストールするとデフォルトだとH2 Databaseを使うけど、それだとGUIで実行ログを確認するときクッソ遅いのでMySQLを利用してみた。 RundeckからMySQLに初回接続した際に下記のテーブルが作成される

mysql> show tables;
+----------------------------+
| Tables_in_jobdb            |
+----------------------------+
| auth_token                 |
| base_report                |
| execution                  |
| job_file_record            |
| log_file_storage_request   |
| node_filter                |
| notification               |
| orchestrator               |
| plugin_meta                |
| project                    |
| rdoption                   |
| rdoption_values            |
| rduser                     |
| report_filter              |
| scheduled_execution        |
| scheduled_execution_filter |
| storage                    |
| workflow                   |
| workflow_step              |
| workflow_workflow_step     |
+----------------------------+
20 rows in set (0.00 sec)

これらのテーブルがそれぞれどのように利用されているのかよく分からなかったので、テーブル確認->ジョブ実行や設定変更等->テーブル確認して地道に調べてみた笑

ちなみに、ジョブ実行時の詳細ログ自体はMySQLではなく、Rundeckがインストールされているサーバ上にログファイルとして出力される(デフォルトパス、/var/lib/rundeck/logs/rundeck/{ProjectName}/job/{UUID}/logs/

テーブル情報

一通り内容確認してみたが、下記テーブル以外はあまり書き込みがされていない模様

  • auth_token

    • API Tokenを作成するとToken情報が登録されるテーブル
  • base_report

    • ジョブ実行レポート(概要レベル)が書き込まれるテーブル。
  • execution

    • ジョブの実行ログが書き込まれるテーブル。ログファイル名とか登録されている
  • rduser

    • rundeckのユーザ情報テーブル。ただ、ログインユーザ以外にAPI Tokenで作成したユーザも登録されてたりでユーザ情報をまとめて管理しているっぽい
  • scheduled_execution

    • ジョブの実行スケジュール設定が登録されるテーブル
  • log_file_storage_request

    • ジョブ実行時の通知履歴(slackやメールなんかと連携している場合ここに履歴が残る)
  • workflow,workflow_step,workflow_workflow_step

    • ワークフロー関連のテーブル、各テーブルの役割はよくわかっていない。ネットの情報によると、workflow_workflow_stepがボトルネックになって性能劣化する可能性があるらしい

調べた感じだとこんなもんでしたー

ちなみに検証環境