Bu örnekte Docker compose ile EFK kurulumu yapacağız. Bu örnekte ek olarak konteyner olarak 80 portundan yayınlanan bir HTTP servisi yayınlayacağız ve bu servisin loglarını aktif olarak kibana üzerinden izleyeceğiz.
Docker kurulumu nasıl yapılır?
Docker compose kurulumu nasıl yapılır?
Aşağıdaki dosyaları sırasıyla oluşturun ve içeriğini ekleyin.
# docker-compose.yml
version: "3"
services:
web:
image: httpd
ports:
- "80:80"
links:
- fluentd
logging:
driver: "fluentd"
options:
fluentd-address: localhost:24224
tag: httpd.access
fluentd:
build: ./fluentd
volumes:
- ./fluentd/conf:/fluentd/etc
links:
- "elasticsearch"
ports:
- "24224:24224"
- "24224:24224/udp"
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.13.1
container_name: elasticsearch
environment:
- "discovery.type=single-node"
expose:
- "9200"
ports:
- "9200:9200"
kibana:
image: docker.elastic.co/kibana/kibana:7.13.1
links:
- "elasticsearch"
ports:
- "5601:5601"
# fluentd/Dockerfile
FROM fluent/fluentd:v1.12.0-debian-1.0
USER root
RUN ["gem", "install", "fluent-plugin-elasticsearch", "--no-document", "--version", "5.0.3"]
USER fluent
# fluentd/conf/fluent.conf
<source>
@type forward
port 24224
bind 0.0.0.0
</source>
<match *.**>
@type copy
<store>
@type elasticsearch
host elasticsearch
port 9200
logstash_format true
logstash_prefix fluentd
logstash_dateformat %Y%m%d
include_tag_key true
type_name access_log
tag_key @log_name
flush_interval 1s
</store>
<store>
@type stdout
</store>
</match>
Aşağıdaki komutla çalıştırın.
docker-compose up --detach
Aşağıdaki komutla kontrol ettiğinizde yapının çalışıyor olduğunu göreceksiniz.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
60a8c3c8fcab httpd "httpd-foreground" 6 minutes ago Up 6 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp fluentd-elastic-kibana_web_1
43df4d266636 fluentd-elastic-kibana_fluentd "tini -- /bin/entryp…" 6 minutes ago Up 6 minutes 5140/tcp, 0.0.0.0:24224->24224/tcp, 0.0.0.0:24224->24224/udp, :::24224->24224/tcp, :::24224->24224/udp fluentd-elastic-kibana_fluentd_1
6a63ad1ddef1 docker.elastic.co/kibana/kibana:7.13.1 "/bin/tini -- /usr/l…" 6 minutes ago Up 6 minutes 0.0.0.0:5601->5601/tcp, :::5601->5601/tcp fluentd-elastic-kibana_kibana_1
6168bd075497 docker.elastic.co/elasticsearch/elasticsearch:7.13.1 "/bin/tini -- /usr/l…" 6 minutes ago Up 6 minutes 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 9300/tcp elasticsearch
Ardından IP adresi ile gittiğinizde 80 portundan yayınladığımız HTTP servisin aktif olduğunu göreceğiz.
Ardından 5601 portundan kibanaya ulaşabilirsiniz.
http://10.10.10.247:5601/
Aşağıdaki linke gidin:
http://10.10.10.247:5601/app/management/kibana/indexPatterns
Buradan Create index pattern
butonuna tıklıyoruz.
Burada fluentd-*
ifadesini yazıp tiki açıyoruz.
Burada ise @timestamp
ifadesini seçiyoruz.
Ardından sol menüden discover kısmına geliyoruz.
Burada ise loglarımızı detaylı bir şekilde görebiliyoruz. Örneğin 10.10.10.99 IP adresine sahip makineden 80 portundaki uygulamaya girdiğimi test edebiliyorum. HTTP loglarını aktif olarak görebiliyoruz.