私の EFK 組織は次のとおりです, 合計 39 の VM があります。Fluented は、各サービス (図では APP としてマークされています) から末尾の形式でログを読み取ります。ログを抽出するには、http://fluentular.herokuapp を使用できます。 .com/ website を使用して通常のルールをテストし、ElasticSearch に送信し、Kibana を使用して表示します。EFK はすべて別の Docker コンテナーで実行されます。
構築手順は次のとおりです
Fluented の構築
1 docker-compose.yml を作成し、2 つのマウント ポイントをマウントします。1 つは fluentd 構成ファイルで、もう 1 つはログが配置されているフォルダーです。
version: '2'
services:
fluentd:
build: .
expose:
- 24224
ports:
- "24224:24224"
volumes:
- /data/conf/fluent.conf:/fluentd/etc/fluent.conf
- /data/logs/nginx:/data/logs/nginx
restart: always
2 Dockerfile を作成し、elasticsearch プラグインと forward プラグインを追加します
FROM fluent/fluentd:v1.12.0-debian-1.0
USER root
RUN ["gem", "install","fluent-plugin-elasticsearch","--no-document", "--version", "4.3.3"]
RUN ["gem", "install","fluent-plugin-forest","--no-document"]
USER root
3 fluent.confを設定する
<source>
@type tail
path /data/logs/nginx/https-access.log
pos_file /data/logs/nginx/https-access.log.pos
<parse>
@type nginx
</parse>
tag *
</source>
<match *.**>
@type forest
subtype copy
<template>
<store>
@type elasticsearch
host XX.XX.XX.XX
port 9200
</store>
</template>
</match>
2 ElasticSearchとKibanaの構成
docker-compose.xml を構成する
version: '2'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2
environment:
- "discovery.type=single-node"
expose:
- 9200
ports:
- "9200:9200"
kibana:
image: kibana:7.10.1
links:
- "elasticsearch"
ports:
- "80:5601"
3 EFKの開始
flentd と EK でそれぞれ docker-compose up --d を実行します。
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4941a0198a4f fluentd_fluentd "tini -- /bin/entr..." 4 days ago Up 4 days 5140/tcp, 0.0.0.0:24224->24224/tcp fluentd_fluentd_1
a33dee4a2bdb kibana:7.10.1 "/usr/local/bin/du..." 7 days ago Up 6 days 0.0.0.0:80->5601/tcp efk_kibana_1
dd05f58e2cbe docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/loc..." 7 days ago Up 6 days 0.0.0.0:9200->9200/tcp, 9300/tcp efk_elasticsearch_1
4 Kibana が配置されているサーバーにアクセスし、インデックスを設定します
Discover で kibana ログ クエリを実行するだけです