Mackerel 公式チェックプラグインを使ってapacheプロセス監視およびレスポンスタイム監視をしてみる

2019.08.29

おはようございます、もきゅりんです。

掲題の通り、公式チェックプラグイン集をインストールして、 apacheのプロセス監視およびレスポンスタイム監視をしてみました。

前回は、下記のような監視の設定を行ってみました。

Mackerel 公式チェックプラグインを使ってping監視/sshログイン監視/その他をしてみる

前提

  • Mackerelのアカウントを取得している

やること

  1. とりあえずMackerel-Agentをインストールする
  2. apacheとプラグインをインストールする
  3. apacheのログにレスポンスタイムを出力させる
  4. プロセス監視とレスポンス監視の設定/テスト

1. とりあえずMackerel-Agentをインストールする

この手順については、ザッと進めます。

前回と同様、Amazon Linux2で対応しています。

Mackerelの管理画面から出力される、こちらのコマンドを対象のサーバで実行します。

agent install

ちょっとすると、Hosts画面にサーバが追加されるはずです。

2. apacheとプラグインをインストールする

こちらを参考に、

チェック監視に公式チェックプラグイン集を使う

プラグインをインストールします。

sudo yum install mackerel-check-plugins

apacheをインストールします。

sudo yum install httpd

apacheのログの設定を編集してレスポンスタイムを出力するようにします。

3. apacheのログにレスポンスタイムを出力させる

こちらを参考に、httpd.confを編集します。

Apache Module mod_log_config

# /etc/httpd/conf/httpd.conf
# 文末にレスポンスタイムを追記
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
#
- LogFormat "%h %l %u %t \"%r\" %>s %b  \"%{Referer}i\" \"%{User-Agent}i\"" combined
+ LogFormat "%h %l %u %t \"%r\" %>s %b  \"%{Referer}i\" \"%{User-Agent}i\" %D" combined

設定を反映させるために再起動します。

# 確認
httpd -t
sudo systemctl restart httpd

実際に数値が出力するかどうか確認します。

apache top

下記例のように、アクセスログの文末に数値が追加されていればOKです。

sudo tail -f /var/log/httpd/access_log

XXX.XX.XXX.XX - - [28/Aug/2019:18:39:32 +0900] "GET / HTTP/1.1" 403 3730 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36" 378

次にプロセス監視とレスポンスタイムの監視をテストします。

4. プロセス監視とレスポンス監視の設定/テスト

confファイルにhttpdのプロセス監視とレスポンスタイムのアラート設定を記述します。

わざとアラートを出させるために、レスポンスタイムが350マイクロ秒より大きい場合にアラートを出すようにします。

# /etc/mackerel-agent/mackerel-agent.conf
# プロセス監視
[plugin.checks.check_httpd]
command = ["check-procs", "--pattern", "httpd"]

# レスポンスタイム監視
[plugin.checks.check_httpd_response]
command = ["check-log", "--file", "/var/log/httpd/access_log", "--pattern", "3[5-9][0-9]$|[4-9][0-9][0-9]$|[1-9][0-9][0-9][0-9]+$"]
prevent_alert_auto_close = true

設定を反映させます。

# mackerelの設定エラーを確認
mackerel-agent configtest
sudo systemctl restart mackerel-agent

設定した監視項目が増えています。

Monitors added

apacheを停止してみます。

sudo systemctl stop httpd

アラートメールが送信されてアラート表示されています。

httped alert

アクセスしてみます。

response time

350より大きい値になりましたー。

メールを受信した上、Hosts画面でアラート表示されました。

response alert

うまくいきましたね。

以上です。

正規表現って使い忘れた頃にやってくる...(苦手。。)

ちなみに自分はNginxの方がApacheよりも大分馴染みがあります。

どなたかのお役に立てば幸いです。

参考

Apache Module mod_log_config

プロセス監視をおこなう

ログ監視をおこなう

チェック監視に公式チェックプラグイン集を使う