머리말
Fluentd는 통합 로깅 계층을위한 오픈 소스 데이터 수집기입니다. Kubernetes, Prometheus, Envoy, CoreDNS 및 containerd에 이어 6 번째 CNCF 졸업 프로젝트입니다. 비교적 경량 인 Elastic logstash와 비교되는 경우가 많습니다. 유연하고 개발이 매우 뛰어납니다. 이 블로그를 쓰는 시점에서 github의 스타는 8.8k, 포크는 1k입니다.
전제
Dockerfile 파일 쓰기
Dockerfile
FROM fluent/fluentd:v1.3.2
ADD fluent.conf /etc/fluent/
RUN echo "source 'https://mirrors.tuna.tsinghua.edu.cn/rubygems/'" > Gemfile && gem install bundler
RUN gem install fluent-plugin-kafka -v 0.12.3 --no-document
RUN gem install fluent-plugin-elasticsearch -v 4.0.3 --no-document
CMD ["fluentd"]
fluent.conf
<source>
@type kafka
brokers kafka:9092
format json
<topic>
topic kafeidou
</topic>
</source>
<match *>
@type elasticsearch
host elasticsearch
port 9200
index_name fluentd
type_name fluentd
</match>
v1.3.2 버전의 fluentd 이미지가 기본 이미지로 사용되며 fluentd의 처리 레이어 확장은 플러그인에 의해 확장되므로이 이미지를 만들 때 해당 kafka 플러그인과
elasticsearch 플러그인 을 설치해야합니다. kafka의 fluentd 플러그인 버전은 0.12.3이고 elasticsearch의 fluentd 플러그인 버전은 4.0.3입니다.
Dockerfile 및 fluent.conf가 준비되었습니다. 미러링 명령을 실행합니다.
docker build -t fluentd-es-kafka:v1.3.2 .
이렇게하면 es 플러그인과 kafka 플러그인이 포함 된 fluentd 이미지가 완성됩니다.
그런 fluentd를 실행하려면 docker 명령 만 실행하면됩니다.
docker run -it -d fluentd-es-kafka:v1.3.2
컨테이너가 시작되면 호스트가 kafka 인 kafka 메시지 수신을 시작하고 호스트가 elasticsearch 인 elasticsearch 노드로 데이터를 전송합니다.
es와 kafka의 노드 주소가 다른 경우 컨테이너의 기본 구성 파일을 재정의하려면 볼륨을 중단해야합니다.
docker run -it -v {存放fluent.conf的目录}:/etc/fluent -d fluentd-es-kafka:v1.3.2
완성 된 이미지 보내기 :lypgcs/fluentd-es-kafka:v1.3.2
> 원두 커피 4 종 출시!
> 공식 계정 팔로우-> [Four Coffee Beans] 최신 콘텐츠 받기