容器化日志收集方案-EFK

栏目: 后端 · 发布时间: 7年前

内容简介:本文将描述如何使用 elasticsearch、 fluentd 、 kibana构建容器化日志收集系统原创作者:吴鹏
前 言

本文将描述如何使用 elasticsearch、 fluentd 、 kibana构建容器化日志收集系统

容器化日志收集方案-EFK

原创作者:吴鹏

介 绍

elasticsearch:

一个分布式的实时文档存储,每个字段 可以被索引与搜索

一个分布式实时分析搜索引擎

能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据

kibana:

是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。

fluentd:

是日志收集系统,通过丰富的插件,可以收集来自于各种系统或应用的日志,然后根据用户定义将日志做分类处理。

Kafka:

是分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计

Kafka将消息以topic为单位进行归纳。 将向Kafka topic发布消息的程序成为producers. 将预订topics并消费消息的程序成为consumer.

如 何 安 装

安装kafka+zookeeper

参考: https://hub.docker.com/r/wurstmeister/kafka/

安装elasticsearch+kibana:

docker run -d -v "$PWD/esdata":/usr/share/elasticsearch/data -p 9200:9200  

elasticsearch

docker run --name kibana -e ELASTICSEARCH_URL=http://127.0.0.1:9200 -p 

5601:5601 -d kibana

安装fluentd

1、自定义fluentd的Dockerfile

FROM fluent/fluentd:v1.2# below RUN includes plugin as examples elasticsearch 

is not required# you may customize including plugins as you wishRUN apk 

add --update --virtual .build-deps \

                            sudo \

                            build-base \

                            ruby-dev \

                            tzdata \

&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \

&& sudo gem install fluent-plugin-elasticsearch \

&& sudo gem install fluent-plugin-kafka \

&& sudo gem sources --clear-all \

&& apk del .build-deps \

&& rm -rf /var/cache/apk/* \

          /home/fluent/.gem/ruby/2.3.0/cache/*.gem



ENTRYPOINT ["fluentd", "-c", "/fluentd/etc/fluent.conf", "-p", "/fluentd/plugins"]

2、编写fluent.conf

<system>

rpc_endpoint 127.0.0.1:24444</system><source>

@type forward   @id forward_input</source><source>

    @type    tail  #### tail方式采集日志

    #format   none

    format   /^(?<all>.*)$/

    path     /log/log.txt

    pos_file /log/pos_file/httpd-access.log.pos

    tag      log.tag</source><match log.**>

   @type copy       <store>

    @type elasticsearch

    hosts localhost:9200

    type_name elasticsearch_fluentd

    include_tag_key true

    tag_key log_name

    flush_interval 10s # for testing

    logstash_format true

    logstash_prefix logstash       </store>

   <store>

     @type     kafka

    brokers              localhost:9092     #zookeeper           localhost:2181

    default_topic       fluent_kafka        #刷新间隔

    flush_interval      30

    ack_timeout      2000

    output_data_type    attr:all       </store></match><source>

@type monitor_agent @id monitor_agent_input

port 24220</source><match debug.**>

@type stdout</match>

3、构建fluentd image:

docker build -t fluentd:test -f Dockerfile .

4、启动fluentd

docker run -it --rm --name fluent_test -v $(pwd)/log/:/log/ -v $(pwd)/:/fluentd/

etc/ fluentd:test

说明:

配置fluentd的RPC 为了重新加载fluentd.conf文件

参考: https://docs.fluentd.org/v1.0/articles/rpc

<system>

rpc_endpoint 127.0.0.1:24444</system>

测试

增加这个文件的日志

echo  test > $(pwd)/log/log.txt

在kibana中进行日志查看:

容器化日志收集方案-EFK

修改fluent.conf

tag_key log_name 修改为tag_key log_name_key执行curl http://127.0.0.1:24444/api/

config.reload

即可以重新加载fluent.conf配置文件,使其生效 继续向log.txt写入日志 fluentd向kafka写入日志进入kafka的container中执行

bin/kafka-console-consumer.sh --bootstrap-server localhost:

9092 --topic fluent_kafka --from-beginning 

附上kafka基本命令

创建topic 这里创建的topic为:bin/kafka-topics.sh --create --zookeeper 

zookeeper:2181 --replication-factor 1 --partitions 1 --topic 查看topicking bin/

kafka-topics.sh --list --zookeeper zookeeper:2181挂起生产者:producerbin/

kafka-console-producer.sh --broker-list localhost:9092 --topic test挂起之后,

就可以输入信息:test挂起消费者: consumer:bin/kafka-console-consumer.

sh --bootstrap-server localhost:9092 --topic test --from-beginning在consulmer

就可以看到生产出来的:test至此完成了基本的elk 和fluent+kafka+zookeeper的日志系统

在kubernets中使用DaemonSet 来获取主机日志或docker container日志参考:

https://docs.fluentd.org/v1.0/articles/quickstart

https://www.elastic.co/products

原文链接: https://mp.weixin.qq.com/s/45xXYHDkyhD0QEVh_KPyVg


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

第三次浪潮

第三次浪潮

[美]阿尔文·托夫勒 / 黄明坚 / 中信出版集团 / 2018-7 / 79.00元

《第三次浪潮》是美国著名未来学家阿尔文•托夫勒的代表作之一。1980年出版之际,随即引起全球热评,堪称中国改革开放的指南。本书阐述了由科学技术发展引起的社会各方面的变化与趋势。托夫勒认为,人类迄今为止已经经历了两次浪潮文明的洗礼:第一次是农业革命,人类就此从原始渔猎时代进入以农业为基础的文明社会,并历经千年,直到工业革命的到来。随后,人类社会历时300年摧毁了落后的第一次浪潮文明,并在“二战”后1......一起来看看 《第三次浪潮》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具