概要
この記事とこの記事を組み合わせてサクっと efk (ElasticSearch + fluentd + Kibana) 環境を構築する方法を紹介します
docker コンテナとして動作させるので VM などは不要です
今回はわかりやすくすべて docker コマンドで起動します
慣れてきたら docker-compose にしても OK だと思います
環境
- macOS 10.14.6
- docker for Mac 19.03.2
- ElasticSearch 7.4.0
- Kibana 7.4.0
Elasticsearch 起動
docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.4.0
Kibana 起動
docker run -d -e ELASTICSEARCH_HOSTS=http://192.168.99.1:9200 -p 5601:5601 docker.elastic.co/kibana/kibana:7.4.0
192.168.99.1 の IP アドレスの部分は docker for Mac が動作しているホストマシンの IP アドレスを指定してください
7.4.0 の場合 ELASTICSEARCH_URL
ではなく ELASTICSEARCH_HOSTS
になっているので注意してください
fluentd 起動
vim Dockerfile
FROM fluent/fluentd
RUN apk add --update --virtual .build-deps \
sudo build-base ruby-dev \
&& sudo gem install \
fluent-plugin-elasticsearch \
&& sudo gem sources --clear-all \
&& apk del .build-deps \
&& rm -rf /var/cache/apk/* \
/home/fluent/.gem/ruby/2.4.0/cache/*.gem
docker build -t my_fluentd .
vim fluent.conf
<source>
@type forward
port 24224
bind 0.0.0.0
</source>
<match docker.**>
@type copy
<store>
@type stdout
</store>
<store>
@type elasticsearch
host 192.168.99.1
port 9200
index_name fluentd
type_name fluentd
</store>
</match>
docker run -d -p 24224:24224 -p 24224:24224/udp -v $(pwd):/fluentd/etc -e FLUENTD_CONF=fluent.conf my_fluentd
192.168.99.1 の IP アドレスの部分は docker for Mac が動作しているホストマシンの IP アドレスを指定してください
nginx 起動
ログを格納するための確認用のコンテナです
自身のアプリがあればそれでも OK です
docker run -d --log-driver=fluentd --log-opt fluentd-address=192.168.99.1:24224 --log-opt tag="docker.{{.Name}}" --name web -p 80:80 nginx
192.168.99.1 の IP アドレスの部分は docker for Mac が動作しているホストマシンの IP アドレスを指定してください
動作確認
動作しているコンテナは以下の通りです
とりあえず動作確認用の nginx にアクセスしてみます
curl localhost/hoge
Kibana でログが来ているか確認します
http://192.168.99.1:5601/ にブラウザでアクセスしてください
まずは Kibana 上でインデックスを作成します
Kibana の「Index Patterns」を選択します
今回の場合 fluentd というインデックスでログが飛んできます
fluentd と入力しインデックスが見つかったら「Next step」を選択します
「Create index pattern」を選択します
timestamp などが必要な場合はここでフィールドを選択して作成します
あとは左メニューから「Discovery」を選択し先程アクセスしたログが出ていれば OK です
最後に
docker を使ってサクっと efk 環境を構築する方法を紹介しました
Kibana の挙動などを確認したいときに便利かなと思います
今回は nginx のログを格納していますがアプリがあればそれでも OK です
また format も使っていないので生ログの文字列をそのまま格納しているので適宜 format を使って必要なフィールドごとに格納すると良いかなと思います
0 件のコメント:
コメントを投稿