7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Fluentd × ElasticSearch × KibanaでELBのアクセスログ解析をする準備

Posted at

概要

2015/10/25 時点で各種最新版を導入する手順を確認したのでメモ。
お試し用として、1つのEC2インスタンスにインストールする構成で作る。

環境について

OS

Amazon Linux 2015.09

ミドル

原則yumでインストールする。
また、Kibanaにbasic認証をかけるためnginxを利用する。

td-agent-2.2.1-0.el2015.x86_64
elasticsearch-1.7.3-1.noarch
kibana-4.1.1-1.x86_64
nginx-1.8.0-10.25.amzn1.x86_64

fluentd-plugin

fluent-plugin-elasticsearch (1.1.0)
fluent-plugin-elb-log (0.2.5)

AWS側の設定

ELBのアクセスログを出力させる

EC2 > Load Balancers > [対象ELB] > Description
Access Logs の Editを選択して編集

ログ出力のインターバルは5分で設定。
また、今回は例として下記のbacket, prefixを利用するとしてtd-agent.confを設定する。

s3://example-bucket/example-elb 

S3 readonly User作成

FluentdからS3を参照するために作成する。

具体的には下記など同様に作成する。
http://dev.classmethod.jp/etc/create_readonly_iamuser/

access_Key, secret_keyを控えておく。

各種インストール

ElasticSearch インストール

yumで導入する

GPG-KEYをインポート

rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch

リポジトリ追加

vim /etc/yum.repos.d/elasticsearch.repo

[elasticsearch-1.7]
name=Elasticsearch repository for 1.7.x packages
baseurl=http://packages.elastic.co/elasticsearch/1.7/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

インストール

yum install elasticsearch
service elasticsearch start
chkconfgi elasticsearch on

Kibanaインストール

yumで導入。また、リバースプロキシとしてnginxを使い、TCP:80をkibana(localhost:5601)に渡す。

yumリポジトリを設定する

vi /etc/yum.repos.d/kibana.repo

[kibana-4.1]
name=Kibana repository for 4.1.x packages
baseurl=http://packages.elastic.co/kibana/4.1/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

kibana インストール

yum install -y kibana

kibana 設定変更、起動

vim /opt/kibana/config/kibana.yml

# The host to bind the server to.
host: "localhost"
service kibana start
chkconfg kibana on

nginx install

yum install nginx http-tools

basic認証設定

tpasswd -c /etc/nginx/htpasswd.users kibanaadmin
<任意のパスワード入力>

nginx.conf 編集

デフォルトで設定されている serverブロックをコメントアウトする。

vim /etc/nginx/nginx.conf

内容省略

kibana用のリバースプロキシ設定を投入する。

vim /etc/nginx/conf.d/kibana.conf

server {
    listen 80;

    server_name example.com;

    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/htpasswd.users;

    location / {
        proxy_pass http://localhost:5601;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;        
    }
}
service nginx start
chkconfig nginx on

http://<サーバIP> で接続し、kibanaにbasic認証でログイン可能か確認する。

td-agent2

インストール

curl -L http://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh

fluent-pluginをインストール

/opt/td-agent/usr/sbin/td-agent-gem install fluent-plugin-elasticsearch
/opt/td-agent/usr/sbin/td-agent-gem install fluent-plugin-elb-log

td-agent.confを編集する

s3 read onlyユーザのaccess_key, secret_keyを指定する。

vim /etc/td-agent/td-agent.conf

<source>
  type elb_log
  region             ap-northeast-1
  s3_bucketname      example-bucket
  s3_prefix          example-elb
  timestamp_file     /tmp/elb_last_at.dat
  buf_file           /tmp/fluentd-elblog.tmpfile
  refresh_interval   300
  tag                elb.access
  access_key_id      <acees_key>
  secret_access_key  <secret_key>
</source>

<match elb.access>
  type elasticsearch
  type_name access_log
  host localhost
  port 9200
  logstash_format true
  include_tag_key true
  tag_key @log_name
</match>

起動

service td-agent start
chkconfig td-agent on

Kibana初期設定

Setting > indeces
Configure an index pattern と表示されてるページで
Time-field name = time を選択して Create

あとはELBのログ出力、Fluentdの転送を待ちましょう。

参考

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?