karakaram-blog

Fluentd + Elasticsearch5 + Kibana5構築(2) Fluentd設定編

 ツイート 0  シェア 0  Google+1 0  Hatena 3

FluentdからElasticsearchにデータ登録

ログ可視化ツールの 3 点セット、Fluentd + Elasticsearch5 + Kibana5 を試すメモ 2 回目。前回 はインストールと動作確認、Firewalld の設定を行いました。今回は Fluentd で Apache のログを収集して Elasticsearch に放り込むところまでやります。

目次

  1. Apache をインストール
  2. Fluentd で Apache のアクセスログを elasticsearch ホストに転送する
  3. 転送されてきたログを Elasticsearch に登録する
  4. Apache のログが Elasticsearch に登録されているか確認
  5. ログ可視化運用でよく使う Elasticsearch の API

Apache をインストール

client マシンにログイン

$ vagrant ssh client

Apache をインストール

$ sudo yum install httpd

起動

$ sudo systemctl start httpd.service

ホストマシンのブラウザから http://192.168.33.11 にアクセスして Apache の Welcome ページが表示されれば OK。

Fluentd で Apache のアクセスログを elasticsearch ホストに転送する

client マシンにログイン

$ vagrant ssh client

/etc/td-agent/td-agent.conf の中身を削除

$ sudo cp /dev/null /etc/td-agent/td-agent.conf

Apache のアクセスログを tail で読み込み elasticsearch ホストにポート 24224 番で転送するように設定

<source>@type tail
  path /var/log/httpd/access_log
  format apache2
  pos_file /var/log/td-agent/httpd-access.log.pos
  tag apache.access
</source>
<match apache.access>
  @type forward
  host 192.168.33.12
  port 24224
  flush_interval 1s
</match>
flush_interval 1s は動作確認ができたら削除
match セクションにある flush_interval は Fluentd がデータを送信する間隔です。デフォルトは 60s で、そのままだと確認に時間がかかって開発がやりづらいので 1s に設定しています。動作確認ができたら削除してデフォルトに戻しておくと良いです。

Fluentd 再起動

$ sudo systemctl restart td-agent.service

転送されてきたログを Elasticsearch に登録する

elasticsearch マシンにログイン

$ vagrant ssh elasticsearch

/etc/td-agent/td-agent.conf の中身を削除

$ sudo cp /dev/null /etc/td-agent/td-agent.conf

ポート 24224 で転送されてきた Apache のアクセスログを Elasticsearch に登録するように設定

<source>@type forward
  port 24224
  tag *
</source>
<match apache.access>
  @type elasticsearch
  host localhost
  port 9200
  logstash_format true
  logstash_prefix apache-access
  flush_interval 1s
</match>

Fluentd 再起動

$ sudo systemctl restart td-agent.service

Apache のログが Elasticsearch に登録されているか確認

ホストマシンのブラウザから http://192.168.33.11 にアクセスして Apache の Welcome ページを何度か表示させます。

elasticsearch マシンに ssh でログインし、以下の curl コマンドで Elasticsearch のインデックス一覧を確認します。うまく転送できていると apache-access-YYYY.MM.DD ができているはずです。

$ curl -XGET 'localhost:9200/_cat/indices?v&pretty'

health status index             uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   .kibana           p3rQTzDsSHKwbqwwzNlaiA   1   1          1            0      3.1kb          3.1kb
yellow open   apache-access-2017.01.28 CUyI8XGoQDONgpqoL1W16g   5   1         25            0     46.6kb         46.6kb

以下の curl コマンドで、作成された apache-access-YYYY.MM.DD の中身を確認します。Fluentd から Elasticsearch にデータが流れてきているのが確認できます。

$ curl -XGET 'localhost:9200/apache-2017.01.28/_search?pretty'

{
  "took" : 7,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 25,
    "max_score" : 1.0,
    "hits" : [
  {
    "_index" : "apache-2017.01.28",
    "_type" : "fluentd",
    "_id" : "AVnlg-fSyVbvN1SmGyEo",
    "_score" : 1.0,
    "_source" : {
      "host" : "192.168.33.1",
      "user" : null,
      "method" : "GET",
      "path" : "/noindex/css/open-sans.css",
      "code" : 200,
      "size" : 5081,
      "referer" : "http://192.168.33.11/",
      "agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.76 Safari/537.36",
      "@timestamp" : "2017-01-28T23:38:22+09:00"
    }
  },
  ...
}

ログ可視化運用でよく使う Elasticsearch の API

ログ収集でよく使う操作をピックアップ

名前 コマンド 公式ドキュメント
インデックス一覧表示 curl -XGET 'localhost:9200/_cat/indices?v&pretty' List All Indices
インデックスのマッピング(定義)表示 curl -XGET 'localhost:9200/{ index_name }/_mapping?pretty' Get Mapping
インデックスのデータを表示 curl -XGET 'localhost:9200/{ index_name }/_search?pretty' Search
インデックス削除 curl -XDELETE 'localhost:9200/{ index_name }?pretty' Delete an Index

次回は Elasticsearch に入ったアクセスログを Kibana から閲覧できるようにします。

 ツイート 0  シェア 0  Google+1 0  Hatena 3