最初に、ルート権限でSAGの実行に必要なソフトのインストールとアカウントの作成を行います。
gitは、SAGをGitHubから取得するために必要です。
# pkg_add git quirks-6.121 signed 2023-06-01 07:54:26 quirks-6.121: ok : : git-2.40.0: ok The following new rcscripts were installed: /etc/rc.d/gitdaemon See rcctl(8) for details. New and changed readme(s): /usr/local/share/doc/pkg-readmes/git #
SAGは、グラフの描画をgnuplotを使って行っているため、gnuplotをインストールします。
インストールを開始すると、どのパッケージを使うか訊かれるので「1: gnuplot-5.2.7p1」を選択します。
# pkg_add gnuplot quirks-6.121 signed 2023-06-01 07:54:26 Ambiguous: choose package for gnuplot a 0: <None> 1: gnuplot-5.2.7p1 2: gnuplot-5.2.7p1-no_x11 Your choice: 1 gnuplot-5.2.7p1:readline-7.0p0: ok : : gnuplot-5.2.7p1: ok Running tags: ok New and changed readme(s): /usr/local/share/doc/pkg-readmes/glib2
SAGを実行するユーザ「sag」を作成します。
# adduser : : Enter username []: sag Enter full name []: System Activity Grapher Enter shell csh git-shell ksh nologin sh [ksh]: Uid [1000]: Login group sag [sag]: Login group is ``sag''. Invite sag into other groups: guest no [no]: Login class authpf bgpd daemon default pbuild staff unbound vmd xenodm [default]: Enter password []: Enter password again []: Name: sag Password: **** Fullname: System Activity Grapher Uid: 1000 Gid: 1000 (sag) Groups: sag Login Class: default HOME: /home/sag Shell: /bin/ksh OK? (y/n) [y]: y Added user ``sag'' Copy files from /etc/skel to /home/sag Add another user? (y/n) [y]: n Goodbye! #
以降の作業はsagアカウントにて行います。
# su - sag $
GitHubより最新バージョンのSAGを取得します。
$ git clone https://github.com/ykaw/sag Cloning into 'sag'... remote: Enumerating objects: 515, done. remote: Counting objects: 100% (92/92), done. remote: Compressing objects: 100% (48/48), done. remote:nTotale515:(delta(40),5reused 66 (delta 33), pack-reused 423 Receiving objects: 100% (515/515), 368.37 KiB | 784.00 KiB/s, done. Resolving deltas: 100% (229/229), done.
取得したファイル群はsagというディレクトリに格納されているので、それをsagユーザのホームディレクトリに移動します。
$ mv sag/.git sag/* ~ $ rmdir sag
gnuplotのシンボリックリンクを作成します。
$ ln -s /usr/local/bin/gnuplot ~/bin
設定ファイルの編集
confディレクトリのexamplesディレクトリからファイルをコピーし、編集します。
$ cd ~/conf $ cp examples/dfplot.gp examples/netcmd.sh examples/postgproc.sh examples/shconf.sh .
dfplot.gpの編集
dfplot.gpは、ディスク使用率の表示を行う際に必要なシステムのパーティション構成を設定するファイルです。
dfコマンドの出力に合わせ、内容を編集します。
$ vi dfplot.gp
編集内容
# definitions of disk partitions # # $Id: dfplot.gp,v 1.2 2017/01/07 06:10:54 kaw Exp $ # # This file will included from $SAGHOME/plot/gen0100df.gp # Reconfigure following to fit to the disk layout. plot "sumtmp-0100df" using 1:3 title "RDROOT", \ <--+ この部分を "sumtmp-0100df" using 1:4 title "LIVEMEDIA", \ | 実際のパーティション "sumtmp-0100df" using 1:5 title "SYSTEM", \ | 構成に合うように "sumtmp-0100df" using 1:6 title "WRITABLE" <--+ 編集
netcmd.shの編集
ネットワークのスループットを測定したいネットワークデバイスを指定します。
$ vi netcmd.sh
編集内容
# a command line to get i/f name, send/receive bytes # then print them out # # this command will eval-ed by $SAGHOME/bin/t0001 # # $Id: netcmd.sh,v 1.3 2021/10/05 02:29:26 kaw Exp $ netcmd='set $(netstat -I bce0 -b -n -i); echo $7 ${11} ${12}' ~~~~ここを実際のインターフェース名に変更
shconf.shの編集
shconf.shでは、測定項目、ファイルに保存する日数、測定項目それぞれのグラフへの描画日数を指定します。
$ vi shconf.sh
編集内容
# shconf.sh - shell variable configuration for SAG # # $Id: shconf.sh,v 1.3 2021/10/04 15:22:35 kaw Exp $ # categories to process data # targets='0001la 0001net 0005mem 0100df 0100time 0005timeofs' # days to store data # rotate_max=64 <--ファイルに保存する日数 # days to display graph <--グラフに描画する日数 # span_la=8 span_net=8 span_mem=8 span_df=32 span_time=32 span_timeofs=8
グラフ描画関連のセットアップ
plotディレクトリでは、データの集計とグラフの描画指示を行っています。
デフォルトでは、examplesディレクトリから必要ファイルをコピーするだけでOKです。
$ cd ~/plot $ cp examples/common.gp examples/gen* .
ファイル置場の作成
測定結果やグラフの画像ファイルを置くディレクトリを作成します。
$ mkdir ~/var
以降は、sagユーザから抜けて再度root権限で作業します。
$ exit #
rootのcrontabにSAG関連のエントリを追加します。
# cd ~sag/conf/examples/ # crontab -l > crontab.orig # cat crontab.orig crontab-root | crontab -
/etc/rc.localの編集
システムが起動した時のSAG関連の処理を追加したあと、/etc/rc.localを編集します。
# cat rc.local >> /etc/rc.local # vi /etc/rc.local
編集内容
# for System Activity Grapher # Add this to /etc/rc.local # # $Id: rc.local,v 1.2 2017/01/07 06:10:54 kaw Exp $ su -l sag -c 'PATH-TO-CMD/bin/addgap' # Rewrite to the real location. ~~~~~~~~~~~実際のパスに書換え # setups for ntp monitoring # touch /tmp/ntpctl.out chown sag:sag /tmp/ntpctl.out chmod 0640 /tmp/ntpctl.out
sagユーザのcrontabを有効化します。
これ以降、SAGの測定が開始されます。
# crontab -u sag ~sag/conf/examples/crontab
以下は、SAGが生成したグラフをウェブブラウザで閲覧するための設定です。
グラフの画像ファイルを画像ビューアで直接見る場合は必要ありません。
postgproc.shの編集
生成されたグラフの画像ファイルをウェブのコンテンツディレクトリにコピーする処理をしていします。 sagユーザ権限で行います
# su - sag $ vi ~/conf/postgproc.sh
編集内容
#!/bin/sh # processes after generating graphs # This script will be called by $SAGHOME/bin/t0100 # # $Id: postgproc.sh,v 1.3 2021/10/04 15:26:38 kaw Exp $ # To enable this, # # Make next line commented. # exit 0 <--この行をコメント化する # and follwing lines uncommented # # sample of post process sleep 60 <--この行以降をアンコメントする cp $SAGHOME/var/*.png /var/www/htdocs/sag/.
$ exit #
関連ファイルのセットアップ
ウェブサーバ関連の設定です。
# mkdir /var/www/htdocs/sag # cp index.html /var/www/htdocs/sag # chown -R sag:sag /var/www/htdocs/sag # vi /etc/httpd.conf
編集内容
server "example.com" { listen on * port 80 }
ウェブサーバを起動します。
# rcctl enable httpd # rcctl start httpd