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サーバーのアクセスを確認しています。実際にグラフにすると、一部トリミングしていますが、このようになります。
さいごに
MackerelでWebサーバーのアクセスログを確認できるようにしました。
プラグインの使い方についての情報はあまり多くなく、すこし設定に戸惑いました。
同じようにmackerel-plugin-accesslogプラグインを利用してWebサーバーのアクセスログを確認したい人の参考になれば嬉しいです。