Edited at

Metabase使って秒速でNginxのアクセスログを可視化してみる

More than 1 year has passed since last update.

Metabaseを使ってNginxのアクセスログ可視化する


TL;DR


  1. nginxのアクセスログをtd-agent使ってmysqlへ格納

  2. metabaseで可視化


環境

環境
バージョン

OS
ubuntu 16.04

MySQL
5.7.20

td-agent
2.3.6-0

Metabase
0.27.2


導入


前提

一応のインストールの一例

- nginxのインストール

- Ubuntuに最新のnginxをインストールする

- mysql-serverのインストール

- Ubuntuに最新のMySQLをインストールする方法

- td-agentのインストール

- nginxのログをtd-agentを利用して、MySQLに突っ込んでみた 〜アクセスログのデータベース化

- curl -L https://toolbelt.treasuredata.com/sh/install-ubuntu-xenial-td-agent3.sh | sh


- 設定の一例

    log_format ltsv "time:$time_iso8601\t"

"ip:$remote_addr\t"
"user:$remote_user\t"
"req:$request\t"
"status:$status\t"
"method:$request_method\t"
"size:$body_bytes_sent\t"
"uri:$request_uri\t"
"file:$request_filename\t"
"referer:$http_referer\t"
"ua:$http_user_agent\t"
"reqt:$request_time\t"
"cache:$upstream_cache_status\t"
"vhost:$host";
access_log /var/log/nginx/access.log ltsv;

<match nginx.access>

@type mysql_bulk
host localhost
database <データベース名>
username <ユーザ名>
password <パスワード>

column_names date,ip,user,req,status,method,size,uri,file,referer,ua,reqt,cache,vhost
key_names ${time},ip,user,req,status,method,size,uri,file,referer,ua,reqt,cache,vhost
sql INSERT INTO <データベース名>(NULL,time,ip,user,req,status,method,size,uri,file,referer,ua,reqt,cache,vhost) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)

table <table名>
flush_interval 5s
port 24230
</match>


Metabase

wget http://downloads.metabase.com/v0.27.2/metabase.jar

#デフォルトで3000番を使うが既に使ってたため変更
export MB_JETTY_PORT=4000
nohup java -jar /opt/metabase/metabase.jar &


  • Adminユーザ名の設定を行う

  • Admin -> databasesからデータベースの追加

  • Database type等を設定
    キャプチャ.PNG

  • DataModelからDatabaseを選択

まずグルーピングせず1年分一覧表を出してみる

キャプチャ.PNG


  • 日毎のアクセス数

VIEWをcount of raws

GROUPED BYをDate:dayで日毎に

VISUALIZATIONでLineへ

image.png

こんな感じで簡単にできました


ダッシュボードの作成

右上のSaveからグラフ名を入手し、表示したいダッシュボードへ追加する

ダッシュボード内で、マウスでグラフを移動・サイズの変更等を行う

1キャプチャ.PNG


  • 1週間

  • 上段に日毎のアクセス

  • 中段にユーザエージェント・IPアドレス・ステータスコード

  • 下段に生データ

超簡単にできましたv(´・ω・`)v