制作帶有kafka插件和es插件的fluentd鏡像

前言

Fluentd是用于統(tǒng)一日志記錄層的開(kāi)源數(shù)據(jù)收集器,是繼Kubernetes、Prometheus、Envoy 、CoreDNS 和containerd后的第6個(gè)CNCF畢業(yè)項(xiàng)目,常用來(lái)對(duì)比的是elastic的logstash,相對(duì)而言fluentd更加輕量靈活,現(xiàn)在發(fā)展非常迅速社區(qū)很活躍,在編寫(xiě)這篇blog的時(shí)候github的star是8.8k,fork是1k就可見(jiàn)一斑.

前提

  1. docker

Dockerfile文件編寫(xiě)

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鏡像為基礎(chǔ)鏡像,由于fluentd的處理層擴(kuò)展是以插件的方式進(jìn)行擴(kuò)展,所以在制作這個(gè)鏡像時(shí)需要安裝對(duì)應(yīng)的kafka插件和elasticsearch插件.
這里kafka的fluentd插件版本為0.12.3,elasticsearch的fluentd插件版本為4.0.3.

Dockerfile和fluent.conf都準(zhǔn)備好了,執(zhí)行制作鏡像命令

docker build -t fluentd-es-kafka:v1.3.2 .

這樣一來(lái)包含es插件和kafka插件的fluentd鏡像就制作完成了.

運(yùn)行這樣一個(gè)fluentd只需要一條docker命令就可以運(yùn)行起來(lái).

docker run -it -d fluentd-es-kafka:v1.3.2

這個(gè)容器會(huì)在啟動(dòng)后開(kāi)始監(jiān)聽(tīng)host為kafka的kafka消息且傳輸數(shù)據(jù)到host為elasticsearch的elasticsearch節(jié)點(diǎn).

如果是es的節(jié)點(diǎn)和kafka的節(jié)點(diǎn)地址不一樣,則需要掛在volume覆蓋容器內(nèi)的默認(rèn)配置文件.

docker run -it -v {存放fluent.conf的目錄}:/etc/fluent -d fluentd-es-kafka:v1.3.2

始發(fā)于 四顆咖啡豆 發(fā)布!歡迎交流

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容