Redashを用いて自作Webサイトを可視化

この記事は約6分で読めます。

今回は自作のWebサイトをRedashを用いて可視化する方法を紹介します。

Redashでは、自分の欲しい情報を簡単に取得することができます。

Redashとは

Redash is our take on freeing the data within our company in a way that will better fit our culture and usage patterns

引用:wikipeida

つまり、Redashはデータを自分達の使いやすいようにデータを整理するためのプラットフォームです。

データを最適に取り出すことができます。

それでは、自作のWebサイトをにRedashを用いていきます。

実践

利用したもの

  • ConoHaVPS (CentOS)…自作Webサイトのサーバ
  • NGINX…Webサーバ、アクセスログを吐き出す
  • mysql…アクセスログを格納する
  • Redash…今回の目玉
  • fluentd…データログ収集ツール(mysqlにログを突っ込む)
  • docker…Redashを起動するときに使う

現状

NGINX によって、/var/log/nginx/access.log にログが書き込まれている状況

流れ

  1. VPSサーバ上:アクセスログを同じサーバのmysqlに整形して格納
  2. ローカル上:ローカルPCでRedashを利用

1. アクセスログを同じサーバのmysqlに整形して格納

NGINXの設定

まず、そのままのアクセスログだと見にくいので、nginxでltsv形式でログを吐き出すようにします。

この記事をかなり参考にさせていただきました

log_format ltsv 'time:$time_local\t'
                'server:$server_name\t'
                'time_local:$msec\t'
                'request_uri:$request_uri\t'
                'status:$status\t'
                'user_agent:$http_user_agent\t'  
                'host:$remote_addr\t'  
                'domain:$host\t'
                'http_referer:$http_referer\t';
access_log  /var/log/nginx/ltsv_request.log ltsv;

sudo nginx -s reloadを実行すると
/var/log/nginx/ltsv_request.log
にアクセスログが書き込まれていきます.

fluentd類のインストール

fluentd類をインストールします
この記事を参考にさせていただきました

<source>
  type tail
  format ltsv
  time_key time
  time_format %d/%b/%Y:%H:%M:%S %z
  tag  nginx.request
  path /var/log/nginx/ltsv_request.log
  pos_file /var/log/td-agent/request.pos
</source>

 Output descriptions:
<match nginx.request>
    type copy
    <store>
    type mysql
    host localhost
    database [mysqlのデータベース名]
    username ***
    password ***
    key_names server,time_local,request_uri,status,user_agent,host,domain,http_referer
    table customer_action_logs
    sql INSERT INTO request_log (server,time_local,request_uri,status,user_agent,host,domain,http_referer) VALUES (?,from_unixtime(?),?,?,?,?,?,?)
    flush_interval 10s
    </store>
    <store>
    type file
    path /var/log/td-agent/request.json
    </store>
</match>

コマンドを実行

$ /etc/init.d/td-agent restart

OKが出れば成功

mysqlの設定

同じサーバ内のmysqlの設定を行います

CREATE TABLE `request_log` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `server` varchar(128) DEFAULT NULL,
  `time_local` datetime DEFAULT '1000-01-01 01:01:01',
  `request_uri` varchar(500) DEFAULT NULL,
  `status` varchar(5) DEFAULT NULL,
  `user_agent` varchar(255) DEFAULT NULL,
  `host` varchar(128) DEFAULT NULL,
  `domain` varchar(128) DEFAULT NULL,
  `http_referer` varchar(128) DEFAULT '',
  PRIMARY KEY (`id`),
  KEY `index_posts_on_updated_at` (`time_local`),
  KEY `request_uri` (`request_uri`)
) ENGINE=InnoDB AUTO_INCREMENT=51539 DEFAULT CHARSET=utf8;

ここまで設定できると,VPSサーバにあるmysqlに自動でアクセスログが入っているはずです.
このままだと外部からのアクセスは許可されていないため,mysqlの外部接続を許可してください
この記事おすすめです

ローカルPCでRedashを利用

$git clone git@github.com:getredash/redash.git

をしdocker-compose.production.ymlを好みで設定します.
ここを参考にしました.

スポンサーリンク

実行結果

まとめ

今回はRedashを用いて、自作Webサイトを可視化してみました。

SQLで好きなデータを取得できるのでおすすめです。

自分のWebサイトを公開したい人はこちらの記事をどうぞ。

ConoHa とお名前.comでサブドメインを利用してページ公開する
ConoHaとお名前.comを用いてウェブアプリを公開します。その時に、サブドメインを使うことで、一つのサーバで複数のアプリを公開できます。その方法を今回解説していきます。

それでは。

 

 

タイトルとURLをコピーしました