ニート日報 2016-09-20

ニート11日目

またも堕落。やばい。
堕落しすぎてやばかったから、自サイトのアクセス解析基盤を整えることにした。

fluentd + Elasticsearch + Kibana

nginxのアクセスログをfluentdでElasticsearchにぶち込んでKibanaで表示する。ってやつを作ってみた。
よくわからないところから数時間で構築ができたので、なかなか生産性の高いツール群だと思った。

この記事を参考にした。

fluentd

fluentdの設定の基本的な構造はシンプルかつ拡張しやすいなーという感想。
参考にしたサイトはngixを動かす鯖とElasticsearchを動かす鯖を分けて、ログをfluentdで転送してからElasticsearchにぶち込むスタイルだった。
そのままパクると動かないが、理解しやすい構文だったので(あまりよくないけど)ドキュメントを参照せずとも、やりたいこと(nginxとElasticsearchを同じ鯖で動かす)を実現することができた。

Elasticsearch

入れただけでほとんどいじってない。
が、ぶちこんだ文字列がanalyzedになってしまい、PathとかUserAgentとかでのグルーピングが上手くできなくなってしまった。
この記事の内容を実施したら、not_analyzedになり良い感じになった。

Kibana

Kibana自体にアクセス制限の機能が無かったため、雑対応としてnginxのvirtualhostにて家のIPアドレスからしかアクセスを許可しないようにした。
家以外からアクセス出来ないのは不便なので、あとで強そうなパスワードのBasic認証に変える。

表示設定は、昔会社で少し触った記憶を蘇らせて適当にいじった。
全アクセスログの時系列カウントは簡単に表示できたが、それをvhostごとに分割して表示する方法まではヒント無しでたどり着けなかった。
ちょっとググったらすぐにやりかたがわかり、晴れて「vhostごとの時系列アクセスカウント」を可視化できるようになった。

Ubuntu 16.04環境にそれぞれインストールしてOS起動時に立ち上げる設定

下記コマンドは全てrootにて。

インストール

日本語の情報だとKibanaをaptで入れる感じの記事がぱっと見つからなかった。

1
2
3
4
5
6
7
8
9
10
11
12
# td-agent(fluentd)
curl -L https://toolbelt.treasuredata.com/sh/install-ubuntu-xenial-td-agent2.sh | sh
td-agent-gem install fluent-plugin-elasticsearch

# Elasticsearch
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | apt-key add -
echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list
apt update && apt install elasticsearch

# Kibana
echo "deb http://packages.elastic.co/kibana/4.6/debian stable main" | tee -a /etc/apt/sources.list.d/kibana-4.6.list
apt update && apt install kibana

OS起動時に立ち上げる

td-agentは自動で登録されたっぽい

1
2
systemctl enable elasticsearch.service
systemctl enable kibana.service

起動

1
2
3
systemctl restart td-agent.service
systemctl restart elasticsearch.service
systemctl restart kibana.service

TODO進捗

https://gist.github.com/mihyaeru21/7ec2e6b408d0c7f546274fd4b5a1e610

  • PyConのLTは諦めた…
    • 無理に頑張れば準備は間に合いそうだけど、発表時にどかどか喋ると確実に咳き込むのが辛い