EFK(4) - 讓 Elasticsearch 與 Kibana 能夠接收 Rails 的 log

架構

安裝步驟

2.1 安裝 elasticsearch

1
2
3
$ curl -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.0.2.tar.gz
$ tar zxvf elasticsearch-5.0.2.tar.gz
$ cd elasticsearch-5.0.2

啟動 elasticsearch

1
$ ./bin/elasticsearch

2.2 安裝 Kibana

1
2
3
curl -O https://artifacts.elastic.co/downloads/kibana/kibana-5.0.2-darwin-x86_64.tar.gz
$ tar zxvf kibana-5.0.2-darwin-x86_64.tar.gz
$ cd kibana-5.0.2-darwin-x86_64

啟動 kibana

1
$ ./bin/kibana

2.3 安裝 fluentd

透過fluentd 的 elasticsearch 套件fluent-plugin-elasticsearch我們可以讓 fluentd 輸出的 log 變成 logstash 輸出的格式,這樣一來 kibana 就可以顯示我們儲存的 log。

安裝 fluent-plugin-elasticsearch

1
fluent-gem install fluent-plugin-elasticsearch --no-document

設定 fluentd 設定檔

1
2
mkdir td-agent
touch ./td-agent/td-agent.conf

編輯 td-agent.conf
因為 Rails 是使用 forward input,我們只需要開啟 forward input 就好。
如果你想監測其他的 log 類型例如:syslog,也可以透過設定 source 來達成。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# get logs from syslog
#<source>
# @type syslog
# port 42185
# tag syslog
#</source>

# get logs from fluent-logger, fluent-cat or other fluentd instances
<source>
@type forward
</source>

<match syslog.**>
@type elasticsearch
logstash_format true
flush_interval 10s # for testing
</match>

執行 fluentd

1
fluentd -c ./fluent/td-agent.conf -vv

參考資料

Free Alternative to Splunk Using Fluentd - Fluentd

評論