容器化日志收集方案-EFK

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

内容简介:本文将描述如何使用 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


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

查看所有标签

猜你喜欢:

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

Perl入门经典

Perl入门经典

[美]Curtis "Ovid" Poe / 朱允刚、韩雷、叶斌 / 清华大学出版社 / 2013-9-20 / 78.00

作为最有影响力的编程语言之一,Perl被广泛用在Web开发、数据处理和系统管理中。无论是Perl新手,还是想要加强自己实战技能的Perl程序员,《Perl入门经典》都提供了处理日常情况所需的各种技术。凭借十多年的Perl经验,作者Curtis“Ovid”Poe一开始先简单回顾了Perl的基础知识,然后以此为出发点,举例说明了Perl在工作场所中的各种真实用法。此外,书中还包含了一些动手练习、宝贵建......一起来看看 《Perl入门经典》 这本书的介绍吧!

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

HTML 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具