ニート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 | # td-agent(fluentd) |
OS起動時に立ち上げる
td-agent
は自動で登録されたっぽい
1 | systemctl enable elasticsearch.service |
起動
1 | systemctl restart td-agent.service |
TODO進捗
https://gist.github.com/mihyaeru21/7ec2e6b408d0c7f546274fd4b5a1e610
- PyConのLTは諦めた…
- 無理に頑張れば準備は間に合いそうだけど、発表時にどかどか喋ると確実に咳き込むのが辛い