tools
- FreeBSD Services Control
(fsc) FreeBSD Quarterly Status Report April-June, 2012において、
FreeBSDサービス制御(fsc)がPorts Collectionに登録されたことが紹介されています。sysutils/ fscに追加されています。 fsc
(FreeBSD Services Control) は、 FreeBSDが提供しているサービス制御機構rc(8)およびservice(8)などに、 さらにモニタリングと自動再起動の機能を追加するものです。Daemontools (sysutils/ daemontools)のFreeBSD版のようなものだと考えるとわかりやすいかもしれません。sysutils/ fscをインストールすると次のような情報が得られます。 % pkg info -f fsc Name : fsc Version : 1.
0.1_ 1 Origin : sysutils/ fsc Prefix : /usr/ local Categories : sysutils Maintainer : trhodes@FreeBSD. org WWW : UNKNOWN Comment : The FreeBSD Services Control family of utilties. Flat size : 41 kB Description : The FreeBSD Services Control software provides service monitoring, restarting, and event logging for FreeBSD servers. The core functionality is a daemon (fscd) which is interfaced with using fscadm. See manual pages for more information. % % pkg info -l fsc fsc-1. 0.1_ 1 owns the following files: /usr/ local/ bin/ fscadm /usr/ local/ etc/ rc. d/ fscd /usr/ local/ man/ man5/ fscd. conf. 5.gz /usr/ local/ man/ man8/ fscadm. 8.gz /usr/ local/ man/ man8/ fscd. 8.gz /usr/ local/ sbin/ fscd % fscは主に次のソフトウェアと設定ファイルで構成されています。
- fscd(8) : FreeBSDサービス制御デーモン。サービスをモニタリングし、
対象サービスが終了した場合にサービスを再度立ち上げる処理を担当する - fscadm(1) : FreeBSDサービス制御管理ユーティリティ。fscd(8)に接続して管理を実施。現在モニタリングしているサービス一覧の表示、
モニタリング対象を追加したり削除するといった操作が可能。指定できるコマンドはenable、 disable、 status、 close、 shutdownなど - fscd.
conf(5) : fscd(8)用の設定ファイル。モニタリングするサービスを1行に1つ記述する。#からはじまる業はコメントとして無視される。デフォルトのデプロイパスは/usr/ local/ etc/ fscd. conf
fscはほかのモニタリングツールと比べ、
FreeBSDの提供しているサービス制御機構rc(8)をそのまま使っているため、 FreeBSDと親和性が高いという特徴があります。 Daemontoolsを使っている場合、
fscは代替可能な対象として候補に入れておくとよいかもしれません。次に簡単に使い方を紹介しておきます。 fscで制御するサービスは/etc/
rc. confや/etc/ rc. conf. localなどでenable指定されたサービスです。そうしたサービスの中から、 fscで制御したい対象を/usr/ local/ etc/ fscd. confファイルに書いておきます。1行1サービス名です。たとえば次のような設定ファイルを用意します。 powerd rpcbind nfsuserd nfsclient nfscbd rpc_
statd rpc_ lockd ntpdate lpd smartd apache22 fscd(8)を起動したいので、
/etc/ rc. confに次の設定を追加します。 fscd_
enable="YES" システムを再起動するか、
直接fscd(8)デーモンを起動します。 # service fscd start tarting fscd. #
fscadm(1)を使ってみましょう。まず、
statusサブコマンドを実行して、 モニタリングしているサービスと、 そのプロセス番号の情報を一覧表示させます。 # fscadm status The fscd pid is 52608. process name pid -------------------------------------------------- apache22 1055 smartd 52434 lpd 995 nfscbd 1087 nfscbd 1086 nfsuserd 973 nfsuserd 972 nfsuserd 971 nfsuserd 970 nfsuserd 969 rpcbind 941 powerd 1019 #
試しにサービスを強制終了してみます。ここではsmartd(8)をkill(1)で終了させます。次のように、
終了したにも関わらず再起動されていることがわかります。kill(1)を実行する前と後でsmartd(8)のプロセス番号が変わっていることを確認できます。 # kill 52434 # fscadm status The fscd pid is 54172. process name pid -------------------------------------------------- apache22 1055 smartd 54559 lpd 995 nfscbd 1087 nfscbd 1086 nfsuserd 973 nfsuserd 972 nfsuserd 971 nfsuserd 970 nfsuserd 969 rpcbind 941 powerd 1019 #
fscadm(8)でsmartdをdisableしてからsmartd(8)を終了させてみると、
次のように起動してこなくなります。 # fscadm disable smartd Service removed. # procstat 54559 PID PPID PGID SID TSID THR LOGIN WCHAN EMUL COMM 54559 1 54558 54558 0 1 daichi nanslp FreeBSD ELF64 smartd # service smartd stop Stopping smartd. Waiting for PIDS: 54559, 54559. # fscadm status The fscd pid is 54172. process name pid -------------------------------------------------- apache22 1055 lpd 995 nfscbd 1087 nfscbd 1086 nfsuserd 973 nfsuserd 972 nfsuserd 971 nfsuserd 970 nfsuserd 969 rpcbind 941 powerd 1019 #
再びsmartd(8)をモニタリング対象として有効にすると、
自動的にsmartd(8)が起動されることがわかります。 # fscadm enable smartd Monitoring service. # fscadm status The fscd pid is 54172. process name pid -------------------------------------------------- smartd 55693 apache22 1055 lpd 995 nfscbd 1087 nfscbd 1086 nfsuserd 973 nfsuserd 972 nfsuserd 971 nfsuserd 970 nfsuserd 969 rpcbind 941 powerd 1019 #
fscは簡単に扱えるモニタリング機能です。再起動することで問題が解決するような運用をしている場合には、
便利な機能として利用できます。 - fscd(8) : FreeBSDサービス制御デーモン。サービスをモニタリングし、