内容简介:本文将描述如何使用 elasticsearch、 fluentd 、 kibana构建容器化日志收集系统原创作者:吴鹏
本文将描述如何使用 elasticsearch、 fluentd 、 kibana构建容器化日志收集系统
原创作者:吴鹏
介 绍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中进行日志查看:
修改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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 使用Fluentd收集Docker容器日志
- 容器服务Windows Kubernetes使用阿里云日志服务来收集容器日志
- k8s容器日志收集方案
- elk6.3.1+zookeeper+kafka+filebeat收集dockerswarm容器日志
- JVM 笔记:垃圾收集算法与垃圾收集器
- JVM 笔记:垃圾收集算法与垃圾收集器
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。