swarm efk

Рас­смот­рим уста­нов­ку сте­ка EFK в docker swarm:

Thank you for reading this post, don't forget to subscribe!

Созда­ём сле­ду­ю­щие директории:
mkdir -p docker-efk/{curator,elasticsearch/config,fluentd/config,fluentd/plugins,kibana/config}

Curator

cat curator/Dockerfile
[codesyntax lang="php" blockstate="collapsed"]

[/codesyntax]

 

cat curator/action_file.yml
[codesyntax lang="php" blockstate="collapsed"]

[/codesyntax]

 

cat curator/config.yml
[codesyntax lang="php" blockstate="collapsed"]

[/codesyntax]

 

Elasticsearch

cat elasticsearch/config/elasticsearch.yml
[codesyntax lang="php" blockstate="collapsed"]

[/codesyntax]

 

Kibana

cat kibana/config/kibana.yml
[codesyntax lang="php" blockstate="collapsed"]

[/codesyntax]

 

Fluent

cat fluentd/Dockerfile
[codesyntax lang="php" blockstate="collapsed"]

[/codesyntax]

 

cat fluentd/fluent.conf
[codesyntax lang="php" blockstate="collapsed"]

[/codesyntax]

точ­но такой же кон­фиг пиха­ем в
cat fluentd/config/fluent.conf
[codesyntax lang="php" blockstate="collapsed"]

[/codesyntax]

cd fluentd/

далее соби­ра­ем наш образ:
docker build -t fluent .
если у нас есть прок­си сер­вер то выпол­ня­ем команду:
docker build -t fluent --build-arg http_proxy=http://адрес_прокси:3128 .

созда­ём архив, копи­ру­ем его на осталь­ные ноды и загружаем:
docker save -o fluent.tar fluent
scp fluent.tar node2:~/
scp fluent.tar node3:~/
ssh -t node2 "docker load -i fluent.tar"
ssh -t node3 "docker load -i fluent.tar"

тоже самое про­де­лы­ва­ем с обра­зом куратора:
cd curator/
docker build -t curator --no-cache .
если есть прок­си то исполь­зу­ем коман­ду в кото­рой будет ука­зан как http так и https:
docker build -t curator --no-cache --build-arg http_proxy=http://адрес_прокси:3128 --build-arg https_proxy=http://адрес_прокси:3128 .

созда­ём архив, копи­ру­ем его на осталь­ные ноды и загружаем:
docker save -o curator.tar curator
scp curator.tar node2:~/
scp curator.tar node3:~/
ssh -t node2 "docker load -i curator.tar"
ssh -t node3 "docker load -i curator.tar"

 

далее созда­ём основ­ной кон­фиг для деплоя:
cat docker-stack-proxy.yml

[codesyntax lang="php" blockstate="collapsed"]

[/codesyntax]

Рас­смот­рим подроб­нее что про­ис­хо­дит в stack
environment:
ES_JAVA_OPTS: "-Xmx256m -Xms256m"
тут зада­ёт­ся пере­мен­ная, в кото­рой мы ука­зы­ва­ем коли­че­ство выде­ля­е­мой опе­ра­тив­ной памя­ти для приложения

configs:
- source: elastic_config
target: /usr/share/elasticsearch/config/elasticsearch.yml

тут мы ука­зы­ва­ем что кон­фиг из пере­мен­ной elastic_config  кла­дём в кон­тей­нер по пути: /usr/share/elasticsearch/config/elasticsearch.yml

 

configs:
elastic_config:
file: ./elasticsearch/config/elasticsearch.yml

тут мы ука­зы­ва­ем отку­да пере­мен­ной elastic_config взять файл с хосто­вой тачки

 environment:
ELASTICSEARCH_HOST: elasticsearch
ELASTICSEARCH_PORT: 9200
SCHEDULE: "* * * * *"
COMMAND: "curator --config /etc/curator/config.yml /etc/curator/action_file.yml"

тут мы ука­зы­ва­ем пере­мен­ные для сер­ви­са curator и добав­ля­ем в cron зада­ние на выпол­не­ние каж­дую мину­ту, с ука­за­ни­ем команды.