SmokePingのメール設定について

 先日よりSmokePingを使って社内のネットワークとホストの状況を記録しています。そんな中、ホストが止まったときなどの警告メールの設定について調べましたのでメモしておきます。アラートの設定については先人の方々が解説してくれていますので詳しくは述べません。うちでは

+loss
type = loss
pattern = ==0%,>10%,>0%

と、lossがまずは0%の通常の状態から10%を超えるロスが発生し、さらに0%を超えたらアラートを発生するよう計画しました。
 まずは*** Alerts ***セクションの設定ですがこちらのマニュアルを参考。
 いろいろと試して気づいたのですがグローバルのto指定は必須となります。下記のように個々のアラートパターンの設定内にtoを設定でき、それぞれのアラートパターンでメールの送信先を変更できるのですが、アラートが発生したときグローバルのtoと個々のto両方にメールが送信されます。例えば、

*** Alerts ***
to = root@localhost

+loss1
to = mail1@localhost

+loss2
to = mail2@localhost

と設定していて、loss2が発生するとroot@localhostとmail2@localhostの両方にメールが送信されるという具合です。
 グローバルのtoを設定していないと、SmokePing起動時に

ERROR: /etc/smokeping/config (Alerts): mandatory variable 'to' not defined

とエラーでSmokePingが実行できませんので注意が必要です。
 個々のアラートパターンで設定したtoにそれぞれメールが届くようにして、アラート全部でメールが届くグローバルのメールアドレスは不要という運用は、上記のグローバルでのto設定が必須となっているので一見不可なのですがtoにパイプとコマンドを記述しメールではなくコマンドの実行も可能なことを利用して、

*** Alerts ***
to = |/usr/bin/true

とすることで、グローバルのメール送信を設定しないことが可能でした。注意点としてtoに設定するコマンド文字列内に空白は不可のようです。パイプの後ろにスペースを入れた

to = | /usr/bin/true

はコマンド実行時にエラーとなります。恐らくtoを切り出すときに空白が区切り文字として扱われるからでしょう。
 あとtoはカンマで複数のメールアドレスの指定も可能で、コマンド実行の併用もできます。以下のような感じですかね。

to = |/etc/smokeping/smtest.pl, root@localhost

 マニュアルにもありますが、コマンド実行時に引数としてname-of-alert、target、loss-pattern、rtt-pattern、hostnameが渡されます。実際に/usr/share/smokeping/Smokepng.pmのだいたい1892行目あたりにある

exec $cmd,$_,$line,$loss,$rtt,$tree->{host};

が該当しています。
 name-of-alertは上記conifgで設定した+loss2などの名前。targetはSmokePingのconfigで設定したグループとピリオドとホストで表記される名前。loss-pattern、rtt-patternはそれぞれ設定した検出パターンで具体的には

loss: 0%, 100%, 100%
rtt: 0ms, U, U

のような内容です。hostnameはconfigのhostに該当します。