容器化日志收集方案-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


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

查看所有标签

猜你喜欢:

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

开发高质量PHP框架与应用的实际案例解析

开发高质量PHP框架与应用的实际案例解析

Sebastian Bergmann / 刘文瀚、刘海燕 / 清华大学出版社 / 2012-6 / 49.00元

PHP已经成为最受欢迎的编程语言之一,这使得用PHP创建高质量、易维护的应用程序和框架比以往受到更多的青睐。通过使用来自于知名公司的真实案例研究,《开发高质量PHP框架与应用的实际案例解析》为Web软件体系结构的不同层次介绍了规划、执行以及测试自动化方面的内容,并解释了这些公司如何测量和测试软件质量。《开发高质量PHP框架与应用的实际案例解析》作者Sebastian Bergmann、Stefan......一起来看看 《开发高质量PHP框架与应用的实际案例解析》 这本书的介绍吧!

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

在线XML、JSON转换工具

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

HEX CMYK 互转工具