dimSTATのインストール

MySQLに関するブログを書かれている(というか中の人?)Dimitriさん作成のdimSTATのインストール手順についてまとめます。確認した環境は全てCentOS6(64bit)です。
URLはこちら(Dimitri (dim) Tools HOMEPAGE)。
Dimitriさんのブログはこちら(DimitriK's (dim) Weblog)

dimSTATはDimitriさんのブログに登場するグラフを生成してくれるリソースモニタです。
Performance Schemaのデータも割りと簡単にグラフ化出来るので性能測定の際には非常に便利なツールとなっています。

事前準備

compressコマンドのインストールとアカウント作成

インストール時にcompressコマンドが入っているかチェックされ、入っていない場合はパッケージに含まれるcompressコマンドがインストールされるようでしたので予めyumでインストールしておきます。

また、dim_STAT用のアカウントであるdimを作成しておきます。変更は可能ですので、違うアカウント名にしたい場合はインストール時に変更して下さい。

$ sudo yum install ncompress
$ sudo useradd -s /bin/bash -d /home/dim dim
$ sudo passwd dim

32bitな以下も必要なのでインストールされていない場合はインストール。32bit環境の場合は既に入っているかもしれません。

$ sudo yum install zlib.i686 libgcc.i686 libstdc++.i686 libX11.i686 ncurses-libs.i686

インストール後に何か上手く動いてないようでしたら/apps/httpd/etc/logs/error_logを見ると足りないライブラリが書かれていたりするの適宜追加しましょう。

出力例
/apps/mysql/bin/mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
どのパッケージに含まれるか調べる場合は以下のように。
$ sudo yum whatprovides */libncurses.so.5

dim_STATのインストール

dim_STATのダウンロードと展開
$ wget 'http://dimitrik.free.fr/dim_STAT-v90-linux-x86.tar'
$ tar xf dim_STAT-v90-linux-x86.tar
インストールの実行と起動

INSTALL.shでインストールを行います。以下の例ではHTTPのポート番号のみ8080へ変更しています。

$ cd dim_STAT-INSTALL
$ sudo ./INSTALL.sh
compress: ok


===========================================
** Starting dim_STAT Server INSTALLATION **
===========================================

HOSTNAME: [ホスト名]
      IP: [IPアドレス]
 DOMAINE: (none)

Is it correct? (y/n): y
**
** ATTENTION!
**
** On your host You have to assign a USER/GROUP pair as owner
** of all dim_STAT modules (default: dim/dim)

 User: dim
Group: dim

Is it correct? (y/n): y


**
** WARNING!!!
**
** On your host You have already created USER: dim
** This user will be the owner of all
** dim_STAT modules...
**
== /etc/passwd: =========================================================

dim:x:10002:10002::/home/dim:/bin/bash

=========================================================================

Is it correct? (y/n): y


======================================
** dim_STAT Directory Configuration **
======================================

** WebX root directory (5MB):
 => /WebX
 => /apps/WebX
 => /opt/WebX
 => /etc/WebX

 [/opt/WebX]:


** HOME directory for dim_STAT pkgs        [/apps]:
** TEMP directory                          [/tmp]:

** HTTP Server Port                        [80]: 8080
** DataBase Server Port                    [3306]:
** Default STAT-service Port               [5000]:


==================================================
** Process...
==================================================
=> Host                        : [ホスト名]
=> IP address                  : [IPアドレス]
=> Domain                      : (none)
=> User                        : dim
=> Group                       : dim
=> WebX root directory         : /opt/WebX
=> HOME directory              : /apps
=> TEMP directory              : /tmp
=> HTTP Server Port            : 8080
=> DataBase Server Port        : 3306
=> Default STAT-service Port   : 5000

Is it correct? (y/n): y


** !!
** !! !!! WARNING !!!
** !! ---------------
** !!
** !! ALL DATA will be DELETED!!! in: /apps/* !!!
** !! as well /WebX, /apps/WebX, /etc/WebX, /opt/WebX !!!
** !!
Delete all data? (y/n): y




** Cleanup /apps
** WebX Setup...
** dim_STAT Server extract...
** HTTP Server Setup...
** Database Server Setup...
** ADMIN/Tools Setup...
** TEMP directory...
** Permissions...
** Crontab Setup...


**
** INSTALLATION is finished!!!
**
May I create now a dim_STAT-Server start/stop script in /etc/rc*.d? (y/n): y
ln: creating symbolic link `/etc/rcS.d/K99dimstat' to `/apps/ADMIN/dim_STAT-Server': No such file or directory
============================================================================
 NOTE:
 =>
 => Please, set a password to the user dim
 => to enable crontab "clean up" procedure!..
 =>


** =========================================================================
**
**   You can start dim_STAT-Server now from /apps/ADMIN:
**
**   # cd /apps/ADMIN
**   # ./dim_STAT-Server start
**
**   and access homepage via Web browser - http://4a-p01-b5:8080
**
**   To collect stats from any Solaris, Linux or MacOSX machines just
**   install & start on them a correcponding [STAT-service] package...
**
** Enjoy! ;-)
**
** -Dimitri
** =========================================================================


$
$ ls -dl /etc/rc?.d/*dimstat
lrwxrwxrwx 1 root root 27 May 23 09:02 /etc/rc0.d/K99dimstat -> /apps/ADMIN/dim_STAT-Server
lrwxrwxrwx 1 root root 27 May 23 09:02 /etc/rc1.d/K99dimstat -> /apps/ADMIN/dim_STAT-Server
lrwxrwxrwx 1 root root 27 May 23 09:02 /etc/rc2.d/S99dimstat -> /apps/ADMIN/dim_STAT-Server
$
$ /etc/rc2.d/S99dimstat start
================[ dim_STAT-Server: start ]================

*
* MySQL Database Server
*
  => Log output  : /apps/mysql/data/mysqld.log
  => Local socket: /apps/mysql/data/mysql.sock
  => Admin Access: root# /apps/mysql/bin/mysql -S /apps/mysql/data/mysql.sock

Starting...
150523 09:07:36 mysqld_safe Logging to '/apps/mysql/data/mysqld.log'.
150523 09:07:36 mysqld_safe Starting mysqld daemon with databases from /apps/mysql/data
Done.
Starting HTTP server from: /apps/httpd
Done.
================[ dim_STAT-Server: start -- done. ]================
$

アップデートファイルの適用(2015/08/08追加)

ここまでの作業でCoreとなるパッケージはインストールが完了しました。続いてアップデートファイルを適用します。
ダウンロードファイル一覧

$ cd /opt/WebX/
$ wget 'http://dimitrik.free.fr/Core_Updates/WebX_apps-v90-u14.tgz'
$ tar zxf WebX_apps-v90-u14.tgz

以上でアップデートファイルの適用は完了です。

STAT-service

dim_STATでリソース取得を行う場合、取得対象となる全てのサーバでSTAT-serviceを起動する必要があります。

STAT-serviceのダウンロード、インストールと設定

MySQLのアドオンも含まれてるSTATsrvをインストールします。

$ wget http://dimitrik.free.fr/STATsrv-Linux-x86-mysql.tgz
$ tar zxf STATsrv-Linux-x86-mysql.tgz
$ sudo mv -i STATsrv /etc/.

MySQLのリソースも取得したい場合は取得したいサーバで以下の設定を行います。

$ cd /etc/STATsrv/bin
$ sudo cp -pi .env-mysql .env-mysql.ORG
$ sudo vi .env-mysql
$ cat .env-mysql
# Set connection params:
User=[ユーザ名]
Passwd=[パスワード]
Host=[IPアドレス]:[ポート番号]

export User Passwd Host

$

.env-mysqlの設定例としては以下のようになります。

# Set connection params:
User=dim
Passwd=dim-pw
Host=192.168.1.100:3306

export User Passwd Host

リソース取得を行いたいMySQLで.env-mysqlで設定したアカウントを作成しておきます。
権限はなんとなくPercona Templateと合わせています。見てる感じ足りてそうですが不足してそうなら足して下さい。

GRANT SUPER,PROCESS ON *.* to dim@'192.168.1.0/255.255.255.0' IDENTIFIED BY 'dim-pw';

リソース取得を行いたい各サーバでプロセスを起動し、準備完了です。

$ cd /etc/STATsrv/
$ sudo ./STAT-service start
Start STAT-service...
   port: 5000
   access log: /etc/STATsrv/log/access.log
$

簡単な初期設定例

dimSTATをインストールしたマシンのIPアドレスを指定する形で http://[インストールIPアドレス]:8080 でアクセスすると以下画面が表示されます。

まずはWelcome!をクリックして以下の画面へ移動します。

先にリソースを取得するサーバを追加する前にアドオンを追加しておきます。

画面下部にMySQL関連のものが3つあるので全部追加します。

終わったら画面右上の[Home]をクリックしてTOPに戻り、モニタするサーバを追加します。[Start New Collect]をクリックします。
NewにIPアドレスなりホスト名を入力して[Continue...]をクリックします。

取得したい対象をチェックし、[Start STAT(S) Collect NOW!!!]をクリックしてモニタリングを開始します。

再び[Home]をクリックしてTOPに戻り、[Analyze]をクリックします。
以下画面になるので特に弄らないで[Analyze]をクリック。

追加したサーバを選択して、分かりやすいのでまずは[Bookmark(s)]をクリックします。

以下画面が表示されるのでとりあえず[InnoDB_HistLen]をクリックします。

すると以下のようにグラフが表示されます。MySQL起動後何もしていないのでグラフはまっすぐです。

割とちゃんと描画しているサンプルは以下のようになります。

おわりに

細かい解説すると切りが無いのですが、とりあえず使うのであれば以上で十分かと思います。
my.cnfに記載するPerformance Schemaの設定は以下で良いかと思います。

performance_schema = ON
performance_schema_instrument='%sync%=on'

dimSTATで起動するApacheがかなり古いので、iptables等で適切にアクセス制御を行う、または127.0.0.1にバインドして起動させ、nginxとかでProxyさせた方が良いと思います。完全にプライベートな環境であればそこまで神経質にならなくても良いかもしれませんが、不特定多数からアクセスされる可能性のあるサーバの場合は気をつけた方が良さそうです。

個人的にはPerformance Schema関連をお手軽にグラフに出来るのでLinkBenchと合わせて使い始めています。ガチサービス中のマシンでは使ってないのでもし使う場合は十分に確認の上、ご利用下さい。