3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援→開発戻り浦島太郎状態の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。

(ツール)SmokePingでアラートメールの設定をする

(ツール)ネットワーク遅延グラフツールSmokePingを入れてみたで、SmokePingというツールをLinuxに導入しました。
このツールはPingの遅延時間の統計を視覚化するものですが、アラートメールの機能も付いているようです。
アラート機能を使うと、任意の監視対象が閾値以上パケットロスもしくは遅延時間が大きすぎるなら、メールを飛ばして管理者に伝えることができます。

しかし、この設定はハマりました。
なにせSmokePingの日本語が少なすぎです。

なんとか設定できたので、手順をメモっておきます。

まず、コンフィグファイルの設定です。
/etc/smokeping/config を開き、以下の設定をします。

..(省略)..
mailhost = smtp.hoge.jp ←送信するSMTPサーバ
..(省略)..

*** Alerts ***
to = admin_ml@hoge.jp,thid.rate.pg@gmail.com ←送信先。カンマで複数指定可能。
from = smokeping@hoge.jp ←送信元メールアドレス

#アラートメール送信する条件を指定

+loss1    ←条件名
type = loss   ←条件タイプ。よく使うのは loss(パケットロス) か rtt(遅延時間)。
# in percent
pattern = >10%,*10* ←最後の10サンプル中にパケットロスが10%超が1回あればメール送信
comment = 直近10サンプルで10%超のパケットロスがあります。 ←コメント


pattern は右側が再直近で、そこから左側に過去の条件を書くようです。
例えば、==0%,==0%,>20%,>20% なら、パケットロス無しが2回続き、その後20%超えのパケットロスが2回あれば という条件になります。

以下、幾つかの条件のサンプルです。詳しくは、公式サイトのヘルプページが参考になります。(英語ですが。。)

+loss2
type = loss
pattern = >10%,*2*,>10% ←最後の10サンプル中にパケットロスが10超のが2回あればメール送信。(たぶん)

+loss3
type = loss
pattern = ==0%,==0%,==0%,>50%,>50%% ←パケットロス無しが3回続き、その後50%超えのパケットロスが2回あればメール送信。


+loss_start
type = loss
pattern = ==S,>20%,>20% ←SmokePingスタート直後に20%超のパケットロスが2回あればメール送信。
(上記loss3の様に安定稼働しててパケットロスが発生したという条件ではSmokePing起動時にパケットロスが始まっていた場合に検出できません。
そのために、==Sが用意されていると思われす。)


+someloss
type = loss
# in percent
pattern = >0%,*12*,>0%,*12*,>0% ←デフォルトのパターンです。たぶん、直近12回で1%以上のパケットロスが3回あればメール送信。
comment = loss 3 times  in a row

+rtt1
type = rtt
pattern = <10,<10,>10,>100,>100 ←遅延時間が10ms未満が2回続き、その後10ms超え、そして100ms超えが2回続けばメール送信。

+rtt2
type = rtt
pattern = ==S,==U,==U ←SmokePingスタート直後に、遅延時間不明(==U)が、2回続けばメール送信。

上記に書いたように、アラートの条件を作成したら、以下のように各ターゲットにどのアラートを適用するか定義します。

menu = Top
title = Network Latency Grapher
remark = Welcome to the SmokePing website of <b>Insert Company Name Here</b>. \
         Here you will learn all about the latency of our network.

#ここから↓が各監視ホストの設定です。
+dc             ←監視グループ名(なんでも良い)
menu  = domain controller  ←ブラウザで見たときの左側のメニュー名
title = ドメインコントローラ ←ブラウザで見たときのタイトル名

++dc01      ←ホストの識別名(なんでも良い)
menu =dc01    ←ブラウザで見たときの左側のメニュー名
title=ドメコン01 ←ブラウザで見たときのタイトル名
host = 10.0.1.10 ←対象のIPアドレス
alerts = loss1,rtt1  ←ここでアラート条件指定。カンマで複数条件指定可能。

++dc02
menu = dc02
title = ドメコン02
host = 10.0.1.11
alerts = loss2  ←ここでアラート条件指定

++dc03
menu = dc03
title = ドメコン03
host = 10.0.98.11
↑アラート指定なし。


SmokePingデフォルトのメールは以下のようなフォーマットで届きます。

件名:
[SmokeAlert] testloss is active on tmp.letsnote
本文:
Tue Aug 30 13:53:38 2011

Alert "loss2" is active for http://hoge.jp/smokeping/smokeping.cgi?target=dc.dc02

Pattern
-------
>10%,*2*,>10%

Data (old --> now)
------------------
loss: 100%, 100%, 100%, 100%
rtt: U, U, U, U

Comment
-------
loss Test

このメールの内容もメールテンプレートを使うことで変更することができます。
メールテンプレートを使うには、以下のようにAlerts項目内の、mailtemplate でテンプレートファイルを指定します。

*** Alerts ***
..(省略)..
mailtemplate = /etc/smokeping/mailtemplate


/etc/smokeping/mailtemplate は以下のような感じとなります。


Subject: [SmokeAlert] ServerNetworkERR:<##ALERT##> <##WHAT##> on <##LINE##>

<##STAMP##>

ServerNetworkError.
AlertName: <##ALERT##>
AlertStatus: <##WHAT##>
SmokePingURL: <##URL##>

AlertPattern
-------
<##PAT##>

Data (old --> now)
------------------
PacketLoss: <##LOSS##>
RTT: <##RTT##>

Comment
-------
<##COMMENT##>

各キーワードは以下の意味があるようです。

<##ALERT##>    - アラート条件名
<##WHAT##>     - ステータス (is active, was raised, was celared)
<##LINE##>     - どのターゲットか(コンフィグファイル内のパスで表される)
<##URL##>      - 対象ターゲットのSmokePingのページ
<##STAMP##>    - 日時
<##PAT##>      - アラート条件のパターン
<##LOSS##>     - パケットロス履歴。
<##RTT##>      - 遅延時間履歴。
<##COMMENT##>  - アラート条件に書いているコメント。

上記のコンフィグは日本語にもすることができます。
ただし、文字コードと改行コードに気を付けないと文字化けしたり、エラーとなったりします。

日本語にする場合、/etc/smokeping/mailtemplate ファイルは ISO-2022-JP (JIS) コードとして保存する必要があります。
また、改行コードはLFで保存する必要があります。

設定が間違っていると以下のようなエラーになったりします。

"ERROR: /etc/smokeping/config, line 40: mailtemplate '/etc/smokeping/mailtemplate' should start with mail header lines" 

そのような場合、は改行コードがLFになっているか、や件名の行がおかしくないか("Subject: "となっておりコロンの後スペースがあるか)確認してみましょう。
コンフィグを変更したら SmopkePing はサービスを再起動しないと反映されないようです。

参考:
SmokePing - smokeping_config 公式のヘルプドキュメントです。
Smokeping mailtemplate format | stompro.org: 英語ですが参考になりました。mailtemplateエラー時の対処法が載っています。
http://jasonyong.blog.51cto.com/47753/186887