クラウドの運用にMackerelを使ってみた(第4回:ネットワーク死活監視設定)

「クラウド導入・運用サービス」のサービス企画担当のとりとりです。
前回は、エージェントをインストールしたホストに対し、プロセスやログ等のOS以上のレイヤ監視設定やURLによる外形監視設定をやりました。
今回は、ネットワーク死活監視設定を行います。ネットワークの死活監視を実装することでネットワークレイヤとの切り分けができるようになります。それでは、実際にやってみましょう。

ネットワークからクラウドまでトータルサポート!!
NTT東日本のクラウド導入・運用サービスを確認してください!!

構成図・やりたいこと

構成図

アプリケーションサーバー(以降、APサーバー)とデータベースサーバー(以降、DBサーバー)がAWS上に各1台ずつある構成とします。各サーバーの初期設定及び、Mackerelエージェントのインストールは完了しているものとします。
前回との構成上の差分は、他システムのサーバーが異なるVPCで稼動しており、VPCピアリングによって接続されています。他システムのサーバーは別会社によって運用されており、詳細な条件はわからない想定とします。

各サーバーのスペック(APサーバー、DBサーバー)※前回と同じ

インスタンス:t2.micro(1vCPU,メモリ:1GiB)
OS:Amazon linux2
ディスクサイズ:8GiB

インストールされているミドルウェア(APサーバー、DBサーバー) ※前回と同じ

APサーバー:Apache v2.4
DBサーバー:PostgreSQL 9.6

やりたいこと

  • システム障害が起きた際に、自システムか他システムかの切り分けを行いたい
  • DBサーバーと連携するシステムのため、DBサーバーとのネットワーク疎通が取れていることが確認したい

上記やりたいことを実現するために、Mackerelの設定を行います。

ping監視設定(チェックプラグインを使用した場合)

前回の繰り返しになりますが、基本監視項目以外を監視するためには2つの方法があります。

  • 公式で配布されている、プラグイン集を利用する
  • スクリプトやプログラムで独自の値を収集して、カスタムメトリックとして投稿する

まずは前者のプラグイン集を利用して行います。

公式チェックプラグインの入手コマンド

yum install mackerel-check-plugins

「check-ping」というプラグインがポート監視に対応しておりますので、エージェントの設定ファイル(mackerel-agent.conf)をテキストエディタで編集します。

エージェントの設定ファイルを編集するコマンド(例)

vi /etc/mackerel-agent/mackerel-agent.conf

設定ファイル最下部に下記のような文章を追記します。

Ping監視する設定(例)

[plugin.checks.check-ping-sample]
command = ["check-ping", "-H", "宛先IPアドレス", "-n", "5", "-w", "2000"]

コマンドの説明

-H:IPアドレス
-n:Ping試行回数
-w:タイムアウトになるまでの待機時間(ms)

追記が終わったら保存し、エージェントを再起動します。

エージェントを再起動するコマンド(例)

systemctl restart mackerel-agent

設定が完了すると、Hostsページの右側に、監視項目が追加されています。

これは前回とほぼ同じ手順で追加することができました。

ネットワークからクラウドまでトータルサポート!!
NTT東日本のクラウド導入・運用サービスを確認してください!!

ping監視設定(カスタムメトリックを使用した場合)

Mackerelにはスクリプトやプログラムで独自の値を収集して、カスタムメトリックとして投稿することができます。公式プラグインに載っていないミドルウェアのメトリクスを収集したい場合などに使うことができます。Ping監視は公式プラグインがありますが、公式プラグインではOK/NGのどちらかしか判定できないので、応答時間をもとにアラートの種類を変えたり、ネットワークの品質判定として応答時間を残しておきたい、という場合にはカスタムメトリックを使います。

カスタムメトリックを投稿する手順は以下のようになります。

  • カスタムメトリックを収集するスクリプトやプログラムを作成
  • エージェントの設定ファイル(mackerel-agent.conf)に先ほど作成したプログラムやスクリプトを実行するコマンドを追加

上記に従って、まずはスクリプトファイルを作成します。

スクリプトファイルを作成するコマンド(例)

sudo vi /etc/mackerel-agent/mackerel-plugin-ping.sh

※今回はエージェントの設定ファイルと同じフォルダに作成しておりますが、必要に応じて読み替えてください。

スクリプトファイル本文

#!/bin/bash
LIST=$*
PREFIX="ping"
TIME=$(date +%s)

for PING in ${LIST:=localhost}; do
  v=$(ping -t 5 -c 2 ${PING} | awk -F '/' '/round-trip|rtt/{print $5; }' | tr -d ms)
  s=$(echo $PING | sed 's#\.#_#g')
  echo ${PREFIX}.${s} ${v:=2000} $TIME
done

参考サイト:https://blog.hiroaki.home.group.jp/2017/09/mackerelping.html別ウィンドウで開きます

スクリプトファイルの作成が終わったら、ファイルのアクセス権限を変更します。

ファイルのアクセス権限を変更するコマンド(例)

sudo chmod 755 /etc/mackerel-agent/mackerel-plugin-ping.sh

※アクセス権はサーバーの設定に合わせて適宜読み替えてください。

次に、エージェントの設定ファイル(mackerel-agent.conf)をテキストエディタで編集します。

エージェントの設定ファイルを編集するコマンド(例)

vi /etc/mackerel-agent/mackerel-agent.conf

設定ファイル最下部に下記のような文章を追記します。

Ping監視する設定(例)

[plugin.metrics.ping]
command = "/etc/mackerel-agent//mackerel-plugin-ping.sh 宛先IPアドレス"

※複数の宛先IPアドレスを指定することも可能です。その場合は宛先IPアドレス間に半角スペースを入れて追記してください

追記が終わったら保存し、エージェントを再起動します。

エージェントを再起動するコマンド(例)

systemctl restart mackerel-agent

設定が完了すると、Hostsページの下部に、新しいグラフが追加されています。

余談ですが、VPCピアリングを行った宛先と、そうでない宛先を指定しています。2インスタンスとも同一アベイラビリティゾーンにあるのですが、VPCピアリングはネットワーク遅延の観点ではそれほど大きな差にならないことがわかります。

SNMP監視設定(おまけ)

ネットワークの監視に、SNMPを使っていることもあるかと思います。
Mackerelの公式プラグインには、「mackerel-plugin-snmp」というプラグインがありますので、SNMPマネージャとして起動しているサーバーにこのプラグインを入れておくと、SNMPの可視化が可能となります。ただし、SNMPトラップによる監視のプラグインは用意されていないので、この場合は別途検討が必要になります。

まとめ・次回予告

ネットワーク死活監視まで完了したことで、インフラの監視は概ね完了しました。多彩なプラグインが用意されているのが非常にありがたく、またプラグインを自分で作ったり公開できることもあって、時代にあったプラットフォームだと感じています。
次回は、AWS/Azureインテグレーション機能を使って、PaaS機能の監視を実装してみたいと思います!お楽しみに!

Amazon Web Services(AWS)は、米国その他の諸国における、Amazon.com, Inc.またはその関連会社の商標です。
Microsoft Azureは、米国Microsoft Corporationおよびその関連会社の商標です。
Mackerelは、株式会社はてなの商標です。
本コラムに掲載のサービスや登録画面等は2019年10月時点の情報であり、変更となる場合があります。

ネットワークからクラウドまでトータルサポート!!
NTT東日本のクラウド導入・運用サービスを確認してください!!

Amazon Web Services(AWS)、Microsoft Azureの
導入支援サービスのご相談、お問い合わせをお待ちしております。

ページ上部へ戻る