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をインストールすると次のような情報が得られます。
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サービス名です。たとえば次のような設定ファイルを用意します。
fscd(8)を起動したいので、/etc/rc.confに次の設定を追加します。
システムを再起動するか、直接fscd(8)デーモンを起動します。
fscadm(1)を使ってみましょう。まず、statusサブコマンドを実行して、モニタリングしているサービスと、そのプロセス番号の情報を一覧表示させます。
試しにサービスを強制終了してみます。ここではsmartd(8)をkill(1)で終了させます。次のように、終了したにも関わらず再起動されていることがわかります。kill(1)を実行する前と後でsmartd(8)のプロセス番号が変わっていることを確認できます。
fscadm(8)でsmartdをdisableしてからsmartd(8)を終了させてみると、次のように起動してこなくなります。
再びsmartd(8)をモニタリング対象として有効にすると、自動的にsmartd(8)が起動されることがわかります。
fscは簡単に扱えるモニタリング機能です。再起動することで問題が解決するような運用をしている場合には、便利な機能として利用できます。