この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
※本エントリはTableau Server v2018.3を前提としています。
こんにちは。DI部@大阪オフィスのtamaです。
今回はTabmonというツールをご紹介します。
Tabmonとは
Tableau社が開発したオープンソースのツールで、Tableau Serverのパフォーマンスを監視・分析することができます。また、そのデータを収集・可視化した情報を、Tableauワークブックの形で閲覧することもできます。
Tabmonをインストールするための条件など
インストール要件
下記の環境にインストールすることができます。基本的にはTableau ServerがインストールされているWindows Serverに入れる形になります。
- Windows OS
- Tableau Server v9以上
- Windows Management Framework 3.0
- Microsoft .NET Framework 4.5以降
- Tabmonインストール時にインストールされます。
- VS 2013用のVisual C ++再頒布可能パッケージ
- Tabmonインストール時にインストールされます。
インストールする前にTableau Serverでやっておくこと
Tableau Server JMXポートを解放しておく
下記のTSMコマンドを実行しておきます(バージョン2018.2以降)
tsm configuration set -k service.jmx_enabled -v true
tsm pending-changes apply
(任意)Tableau Serverリポジトリ設定を有効化する(readonlyユーザーを用意する)
Tabmonのサンプルワークブックを使用する場合のみ必要となります。下記TSMコマンドを実行しておきます。
tsm data-access repository-access enable --repository-username readonly --repository-password <パスワード>
やってることは、下記エントリに書かれていることと同じです。
- Tableau Serverの管理ビューを使用してみる #tableau | DevelopersIO
- 「Tableau Server リポジトリへのアクセスを有効にする
Tabmonをインストールしてみる
インストーラーをGETする
下記よりダウンロードします(今回は1.3をインストールします)。
インストーラー実行
GETしたインストーラーを実行します。すると、OptionとInstallという2つのボタンが表示されますが、まずはOptionsを選択しましょう。
こちらの画面で、Tabmonのインストール先と、同時にインストールするPostgresのインストール先を設定します。また、Postgresのパスワード等も設定できます。今回はオール初期設定でいきます。OKを押しましょう。
先程の画面に戻るので、Installを選択すると、あれよあれよと言う間にインストールが完了します。
Tabmonを実行する前の事前設定
Tabmon.configの設定を行う
実行する前にTabmon.config
というファイルの内容を編集する必要があります(ここを正しくしておかないと、監視結果のワークブックに何も表示されない)。
Tabmon.config
は、\Program Files (x86)\TabMon\Config\TabMon.config
にあります。
インストール直後の内容は下記のようになっています。
<?xml version="1.0"?>
<!-- TabMon user settings: set these as required -->
<TabMonConfig xmlns="TabMon">
<!-- Output mode. "DB" for database, "CSV" for flat-file export -->
<OutputMode value="db"/>
<!-- Polling rate, in seconds -->
<PollInterval value="60"/>
<!-- Target cluster & host configuration -->
<Clusters>
<Cluster name="Primary">
<Host computerName="YOURCOMPUTERNAME" address="localhost" specifyPorts="false"/>
</Cluster>
</Clusters>
<!-- Results output database Configuration-->
<Database name="TabMon" type="Postgres">
<Server host="localhost" port="5432"/>
<User login="tabmon" password="xxxxxxxx"/>
<Table name="countersamples"/>
<!-- Generate indexes on service startup. -->
<Indexes generate="true">
<Index column="timestamp" clustered="true"/>
<Index column="machine" clustered="false"/>
<Index column="instance" clustered="false"/>
</Indexes>
<!-- Automatically drop data rows older than the specified number of days.
Set enabled="true" to turn this on. -->
<PurgeOldData enabled="false" thresholdDays="30"/>
</Database>
</TabMonConfig>
Tabmonを活用するためには、Tableau ServerのJMXプロセスであるvizqlserver、vizportal、dataserver、backgrounderのJMXポートを調べて、このコンフィグファイルに記載する必要があります。Tableau Serverの各プロセスのポートを確認するには tsm topology list-ports
コマンドを使用します。…しかし、このコマンドでそれぞれのポートを調べてコンフィグファイルに書くのは結構面倒です。そんな人のために、ポートを調べてくれる上にxml部分まで自動で生成してくれるツールがあるので、それを使用します。
上記よりTabMonConfigBuilder.exe
をダウンロードし、解凍します。
コマンドプロンプトを開き、上記で解凍したフォルダに移動します。そして下記コマンドを順に実行します。
tsm login -u [TSMで使用するユーザー名]
tsm topology list-ports > [ポート情報を出力するテキストファイル名]
tabmonconfigbuilder [上記で作成したファイル名] [部分を出力するファイル名]
>cd C:\Users\Administrator\Downloads\TabMonConfigBuilder
>tsm login -u Administrator
>tsm topology list-ports > ports.txt
>tabmonconfigbuilder ports.txt tabmon_config_port.txt
Parsing topology file for process entries..
Building config section..
Writing config section and instructions to tabmon_config_port.txt..
Done writing config section..
Exiting..
最終的に出力されたファイルの中を確認すると、下記のxmlが記述されています。
<Host computerName="node1" address="node1" specifyPorts="true">
<ProcessType processName="dataserver">
<Process portNumber="xxxx" processNumber="x"/>
<Process portNumber="xxxx" processNumber="x"/>
</ProcessType>
<ProcessType processName="vizql">
<Process portNumber="xxxx" processNumber="x"/>
<Process portNumber="xxxx" processNumber="x"/>
</ProcessType>
<ProcessType processName="background job monitor">
<Process portNumber="xxxx" processNumber="x"/>
<Process portNumber="xxxx" processNumber="x"/>
</ProcessType>
<ProcessType processName="vizportal">
<Process portNumber="xxxx" processNumber="x"/>
</ProcessType>
</Host>
このxmlのcomputerName
とaddress
を正しい値に書き換えて、Tabmon.config
にペーストしましょう。
<?xml version="1.0"?>
<!-- TabMon user settings: set these as required -->
<TabMonConfig xmlns="TabMon">
<!-- Output mode. "DB" for database, "CSV" for flat-file export -->
<OutputMode value="db"/>
<!-- Polling rate, in seconds -->
<PollInterval value="60"/>
<!-- Target cluster & host configuration -->
<Clusters>
<Cluster name="Primary">
<Host computerName="ec2amaz-xxxxxx" address="localhost" specifyPorts="true">
<ProcessType processName="dataserver">
<Process portNumber="xxxx" processNumber="x"/>
<Process portNumber="xxxx" processNumber="x"/>
</ProcessType>
<ProcessType processName="vizql">
<Process portNumber="xxxx" processNumber="x"/>
<Process portNumber="xxxx" processNumber="x"/>
</ProcessType>
<ProcessType processName="background job monitor">
<Process portNumber="xxxx" processNumber="x"/>
<Process portNumber="xxxx" processNumber="x"/>
</ProcessType>
<ProcessType processName="vizportal">
<Process portNumber="xxxx" processNumber="x"/>
</ProcessType>
</Host>
</Cluster>
</Clusters>
<!-- Results output database Configuration-->
<Database name="TabMon" type="Postgres">
<Server host="localhost" port="5432"/>
<User login="tabmon" password="xxxxxxxx"/>
<Table name="countersamples"/>
<!-- Generate indexes on service startup. -->
<Indexes generate="true">
<Index column="timestamp" clustered="true"/>
<Index column="machine" clustered="false"/>
<Index column="instance" clustered="false"/>
</Indexes>
<!-- Automatically drop data rows older than the specified number of days.
Set enabled="true" to turn this on. -->
<PurgeOldData enabled="false" thresholdDays="30"/>
</Database>
</TabMonConfig>
computerNameについて
こちらを手っ取り早く確認するには、コマンドプロンプトでhostname
コマンドを実行するのが楽です。
>hostname
EC2AMAZ-xxxxxx
※Tabmon.config
にペーストする際、小文字で入力することをオススメします(大文字の場合、Tabmonの監視結果が正常に出力されなかった)。
addressについて
今回、TabmonはTableau Serverと同じインスタンスにインストールしているのでlocalhost
を指定します。
Tabmonの実行
設定ファイルが整ったら、いざ実行します。…といっても、普通にWindowsメニューから実行するだけです。
これで、Tabmonが動き始めて、Tableau Serverの監視をスタートします。
結果の確認
Tabjoltもそうでしたが、Tabmonも一番大事なのはここです。監視した結果を確認するためには、下記のTableauワークブックを開きます。
\Program Files (x86)\TabMon\Resources\Sample Workbooks\2018.2+\Tabmon.twb
※Tabmonインストール直後、「2018.2+」のフォルダが無い場合があります。その時は下記からワークブックだけダウンロードしましょう。
- https://github.com/tableau/TabMon/files/2678117/TabMonWorkbook.zip
開いてみる
このワークブックは、Tabmonと同時にインストールされるPostgreSQLとTableau Serverリポジトリを参照します。Tabmon側のPostgreSQLのパスワードですが、もし忘れたというかたはTabmon.config
をよーく見ましょう(書いてます)。
CPUやメモリ、ディスクI/Oの情報を時系列で確認することができます。Tabjolt同様、このワークブックもそれなりに盛り沢山なので、詳細は別エントリで書いていきたいと思います。
おわりに
Tabmonをインストールすることで、Tableau Serverの利用状況とハードウェア側のリソースがどれだけ使用されているか監視することができます。日常的にこのツールでTableau Serverに目を光らせておくことで、Tableau Serverのスケーリングやサイジングを検討することができます。Tabjoltで負荷テストを行い、それをTabmonでチェックする…みたいな使い方もいいかもしれません。