ログ可視化ツールの 3 点セット、Fluentd + Elasticsearch5 + Kibana5 を試すメモ 2 回目。前回は 3 つのツールをインストールして動作確認をするところをやりました。
-
Fluentd + Elasticsearch5 + Kibana5構築(1) インストール編
ログ可視化ツールの 3 点セット、Fluentd + Elasticsearch5 + Kibana5 をインストールし ...
続きを見る
今回は Fluentd で Apache のログを収集して Elasticsearch に登録するところをやります。
目次
- Apache をインストール
- Fluentd で Apache のアクセスログを elasticsearch ホストに転送する
- 転送されてきたログを Elasticsearch に登録する
- Apache のログが Elasticsearch に登録されているか確認
- ログ可視化運用でよく使う 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>
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?&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 から閲覧できるようにします。
-
Fluentd + Elasticsearch5 + Kibana5構築(3) Kibana設定編
ログ可視化ツールの 3 点セット、Fluentd + Elasticsearch5 + Kibana5 を試すメモ 3 ...
続きを見る