MackerelにNginxのアクセスログを送る方法

目次

概要

MackerelでNginxのWebサーバーのアクセスを可視化しました。

その方法について紹介します。

何をするのか

Mackerelでは、サーバーの様々な情報をメトリクスとして受け取り、グラフで表示することができます。

代表的なところでは、CPUやメモリ、IOの使用率や使用量などですが、Mackerelでは、プラグインをつかうことでそれ以外の情報を解析することができます。

今回私は、MackerelにNginxのログを送るようにしました。Mackerelでは、Webサーバーがクライアントに返したレスポンスのステータスコードを見ています。これを見ることで、サーバーへのアクセス数や500番台のサーバーエラーがどれだけあるのか分かります。

ちなみにログの形式が同じであれば、ApacheのWebサーバーでも同じように設定可能なはずです。

設定

Mackerelでサーバーのログを送るためには、プラグインをインストールする必要があります。

サーバーで次のコマンドを実行してプラグイン集をインストールします。FedoraやCentOS、DebianやUbuntuで異なりますが、パッケージ名はどちらも同じ「mackerel-agent-plugins」です。

sudo yum install mackerel-agent-plugins # Fedora系
sudo apt-get install mackerel-agent-plugins # Debian系

プラグインは、コマンドとしてインストールされます。今回利用するプラグインは、mackere-plugin-accesslogです。

このプラグインを使うように、/etc/mackerel-agent/mackerel-agent.confに設定を追加します。

[plugin.metrics.accesslog]
command = ["mackerel-plugin-accesslog", "/var/log/nginx/access.log"]

ログの場所は、/var/log/nginx/access.logです。もしも場所やファイル名が異なる場合は、適切なログファイルの場所や名前を設定してください。

Nginxでウェブサイト毎にログファイルを分けている場合など、複数のログファイルがある場合は、次のように、-metric-key-prefixオプションをつけることで、別々に集計可能です。

[plugin.metrics.accesslog_web1]
command = ["mackerel-plugin-accesslog", "-metric-key-prefix", "web1", "/var/log/nginx/access.web1.log"]

[plugin.metrics.accesslog_web2]
command = ["mackerel-plugin-accesslog", "-metric-key-prefix", "web2", "/var/log/nginx/access.web2.log"]

[plugin.metrics.accesslog_web3]
command = ["mackerel-plugin-accesslog", "-metric-key-prefix", "web3", "/var/log/nginx/access.web3.log"]

最後に、mackere-agentの再起動をして、設定を反映させます。

sudo systemctl restart mackerel-agent.service

これで終わりです。

私はこのようにして、MackerelでWebサーバーのアクセスを確認しています。実際にグラフにすると、一部トリミングしていますが、このようになります。

emerald-custom.orzs_tech.access_num2.png

emerald-custom.orzs_tech.access_rate2.png

さいごに

MackerelでWebサーバーのアクセスログを確認できるようにしました。

プラグインの使い方についての情報はあまり多くなく、すこし設定に戸惑いました。

同じようにmackerel-plugin-accesslogプラグインを利用してWebサーバーのアクセスログを確認したい人の参考になれば嬉しいです。