皆さんこんにちは、MSP事業部エンジニアリンググループの池内です。弊社では監視システムとしてNagiosを利用しています。監視中に発生するアラート通知をメールで受けていますが、実際に運用していると不便なところがあり、最近アラートメール本文のフォーマットをカスタマイズしました。そこで今回は何をどうカスタマイズしたか紹介します。本記事の概要としては下記になります。Nagiosのデフォルト設定では、監視プラグインの標準出力の実行結果をアラートメールに1行分しか出力できないNagios設定ファイル内で定義されているメール通知コマンドをカスタマイズすることにより、監視プラグインの実行結果が複数行あったとしても全てアラートメールに出力できるなお本記事は想定する読者として、Nagiosの監視設定を1からセットアップできるレベルが前提となっていることをご了承ください。アラートメールの制約と本記事の目的Nagiosでは独自に作成したスクリプトの標準出力をアラートメールに含ませられます。この仕組みを活用して、弊社では監視プラグインの出力結果を監視アラートの補足情報として載せています。Info部分に記載されます。デフォルトでは出力できるテキストは1行までという制限があるため、2行目以降のテキストは表示されません。check_disk監視プラグインの場合-nオプションを利用することで、実行結果を複数行にわたって出力できます。/dev=0MiB;420;443;0;467しかし実際に送付されるアラートメールは以下のようになります。Infoを複数行で出力するための方法を紹介します。APIを参考に確認します。Nagiosの監視プラグインは実行時に少なくとも1行の標準出力を返す必要があります。監視プラグインの標準出力のフォーマットは下記のように定められています。標準出力の内容はフォーマットに応じてパースされ、マクロとしてNagiosで扱えます。Infoに出力される内容は$SERVICEOUTPUT$となります。Infoを複数行で出力できます。Infoに2行目以降のテキストを出力できるように設定します。Infoに2行目以降のテキストを出力するには、Commandsに定義されたメール通知コマンドを修正する必要があります。デフォルトのメール通知コマンドを確認するまずはデフォルトのメール通知コマンドがどうなっているかを確認します。Nagiosのアラートメール通知コマンドの設定はソースからインストールした場合は/usr/local/nagios/etc/objects/commands.cfgに、パッケージマネージャーでインストールした場合は/etc/nagios/objects/commands.cfgに設定ファイルがあることが多いです。詳しくはnagios.cfgのcfg_fileディレクティブから設定ファイルのパスを確認できます。デフォルトで設定されているアラートメール通知コマンドはnotify-service-by-emailという名前で定義されており、内容は下記のとおりです。$CONTACTEMAIL$}ここでアラートメールの件名・本文のフォーマットやメール送信コマンドが定義されています。Info:\n\n$SERVICEOUTPUT$\nという記述に注目してください。Infoの記載内容が定義されており、$SERVICEOUTPUT$の内容のみが出力されていることが分かります。新たにメール通知コマンドを定義する上記notify-service-by-emailを雛形に、新たにnotify-service-long-output-by-emailという設定を下記内容で作成します。Info:\n\n$SERVICEOUTPUT$\n$LONGSERVICEOUTPUT$\nという記述であり、新たに$LONGSERVICEOUTPUT$\nという記述を追記しています。ここで定義した通知コマンドを使用します。定義したメール通知コマンドを使って監視する最後に実際のサービス監視項目が定義した通知コマンドnotify-service-long-output-by-emailを使って通知するように設定します。自身のNagiosで利用しているContact設定のservice_notification_commandsディレクティブの値を、先程定義したnotify-service-long-output-by-emailに変更します。0}特定のサービス監視項目のみにnotify-service-long-output-by-emailを適用したい場合は、新しくcontactの設定を定義するのが良いでしょう。これで設定は完了です。Infoが複数行で出力されます。Infoの部分を複数行で出力する方法を紹介しました。これでアラートメールにより詳細な情報を分かりやすく出力できます。Info部分以外もアラートメールのフォーマットをある程度調整できますので、ぜひ調べてみてください。今回紹介する事例は下記環境で確認、検証しています。株式会社ハートビーツの技術情報やイベント情報などをお届けする公式ブログです。こちら「みんな仲良く」「プライドを持って」「変化を楽しむ」という企業理念に共感していただけるエンジニアを募集しています。