クラウドの運用にMackerelを使ってみた(第3回:プロセスやログ等の詳細監視設定)

「クラウド導入・運用サービス」のサービス企画担当のとりとりです。
前回は、エージェントをインストールしたホストに対し、サービス・ロールの設定を行い、しきい値と通知設定するところまでやりました。
今回は、プロセスやログ等のOS以上のレイヤの監視設定を行います。

構成図・やりたいこと

構成図

前回と同じ構成です。
アプリケーションサーバー(以降、APサーバー)とデータベースサーバー(以降、DBサーバー)がAWS上に各1台ずつある構成とします。各サーバーの初期設定及び、Mackerelエージェントのインストールは完了しているものとします。APサーバーのindex.htmlファイルは後述の通知試験のため、作成していない状態にしておきます。

各サーバーのスペック

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

インストールされているミドルウェア

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

やりたいこと

  • CPU等のハードウェア監視だけではなく、ミドルウェアの死活監視を行いたい
  • ミドルウェアが利用できなくなったら、アラート通知したい
  • 指定のシステムログを通知したい
  • システム全体として動いているか確認したい

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

ポート監視設定

基本監視項目以外を監視するためには2つの方法があります。

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

ポート監視は前者のプラグイン集を利用して行います。

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

yum install mackerel-check-plugins

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

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

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

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

HTTP(80番ポート)を監視する設定(例)

[plugin.checks.tcp_port80]
command = [“check-tcp”, “-H”, “localhost”, “--port”, “80”, “--critical”, “1”]

同様にHTTPS(443番ポート)も設定追加します。
追記が終わったら保存し、エージェントを再起動します。

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

systemctl restart mackerel-agent

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

プロセス監視設定

プロセスのチェック監視を行うには、ポート監視と同様に公式チェックプラグインを行います。対応するチェックプラグインは「check-procs」となります。設定ファイルをテキストエディタで編集します。

Apache(プロセス名:httpd)を監視する設定(例)

[plugin.checks.check_httpd]
command = [“check-procs”, “--pattern”, “httpd”]

ログ監視は、「check-log」となります。

ログ監視を行う設定(例)

[plugin.check.xxxx_log]
command = [“check-log”, “--file”, “/path/to/xxxx.log”, “--pattern”, “yyyy”]
※xxxxには監視したいログ、yyyyには通知したい内容の文字列を記載します。

追記が終わったら保存し、ポート監視と同様にエージェントを再起動します。すると、ポート監視と同じように監視項目が追加されています。

代表的なプロセスでは、このようなチェック監視のほか、メトリクスとして可視化できるような公式プラグインが用意されております。各種公式プラグインのインストール及び利用方法は、下記のサイトをご覧ください。

https://mackerel.io/ja/docs/entry/howto/mackerel-agent-plugins別ウィンドウで開きます

DBサーバーもAPサーバーと同じく、ポート監視、プロセス監視、ログ監視を行います。PostgreSQLの監視は「check-postgresql」がありますので、こちらを使うことで、データベースに対するチェック監視が可能になります。

データベース監視を行う設定(例)

[plugin.checks.check-postgresql]
command = ["check-postgresql", "connection", "--host", "localhost", "--port", "5432", "--user", "USER", "--password", "PASSWORD", "--database", "DBNAME", "--warning", "70", "--critical", "90"]

例によってエージェントの再起動を行い、監視項目が追加されているか確認します。

外形監視設定

続いて、外形監視の設定を行います。外形監視とは、「システムとして提供するサービスが正しく動いているか?」をシステムの外部から確認することです。指定のURLにアクセスしてレスポンス結果を監視します。「システム全体のエラー率に基づいて運用対処を行いたい」などのときに外形監視を利用します。

今回は、APサーバーのトップページ(index.html)が表示されている状態を監視します。外形監視を行うには、Monitorsから「監視ルールを追加」をクリックします。

外形監視をクリックします。

外形監視の設定を行います。必須となるのは指定先のURLと、監視ルール名となります。

オプションでしきい値とアラート発生までの回数を決めます。デフォルトは15秒ですが、任意の値にします。

作成ボタンを押して、正しく設定すると監視ルールに外形監視が追加されます。

Apacheのインストールした直後の初期ページを開くと、HTTPステータスコードは403となりエラー扱いとなります。このエラーはアラート通知対象となっているので、アラートが通知されていることを確認します。しばらく待ってから、APサーバー内でindex.htmlファイルを作成し、トップページが表示されることを確認します。

indexページが正しく表示されたら、アラートが停止していることを確認します。Alertページで詳細を確認することができます。

これで外形監視の設定が完了しました。
他にも、Mackerelの外形監視では以下のような監視が可能です。

  • API処理が時間内に終わるか
  • サーバー証明書の有効期限が切れていないか

まとめ・次回予告

今回まででミドルウェアやシステム単位での監視設定が完了しました。公式プラグインをうまく活用することで高度な監視設計が可能だと感じました。また、サーバー証明書の有効期限切れ確認が自動でできるようになるのは非常に心強いですね。
次回は通信キャリアらしく、ネットワーク死活監視を追加してみたいと思います。お楽しみに!

Amazon Web Services(AWS)は、米国その他の諸国における、Amazon.com, Inc.またはその関連会社の商標です。
Microsoft Azureは、米国Microsoft Corporationおよびその関連会社の商標です。
Mackerelは、株式会社はてなの商標です。
本コラムに掲載のサービスや登録画面等は2019年9月1日時点の情報であり、変更となる場合があります。
Amazon Web Services(AWS)、Microsoft Azureの
導入支援サービスのご相談、お問い合わせをお待ちしております。

ページ上部へ戻る