分布式日志问题
1.分布式系统日志
(1)分布多
(2)追踪难
2.处理方式
(1)日志收集
(2)可视化
3.常见日志解决方案
(1)ELK+Kafka
(2) 第三方
Elatsicsearch
1.分布式搜索引擎
2.特性
(1)分布式实时全文搜索引擎
(2)分布式实时分析搜索引擎
(3)分布式实时大数据处理引擎
Kibana
1. Elastic Stack 成员
2.数据分析和可视化
(1)图形
(2)表格
(3) …
2. Web端访问
Logstash
1.Elastic Stack 成员
2. 数据处理管道
(1)Input(采集)
(2)Output(迁移)
Kafka
1.定义
(1) 一个由Java+Scala开发的开源流处理平台
2.特点
(1)稳定性
(2)高吞吐
(3)易扩展
3.依赖环境
(1)Zookeeper
ELK+Kafka日志收集原理
1.Kafka:日志接收+异步处理
2.Logstash:获取日志+发送日志
3.Elasticsearch:存储日志+分析日志
4.Kibana:查询展示
基于Docker搭建ELK+Kafka
1. 安装步骤
① 上传Dockerfile包至ELK+Kafka目录(如果没有Dockerfile文件直接push也可以)
② 进入ELK+Kafka目录
③ 执行以下命令,生成镜像
(1)docker build -t elasticsearch Elasticsearch
(2)docker build -t kibana Kibana
(3)docker build -t kafka Kafka
(4)docker build -t logstash Logstash
④ 创建容器
(1)docker run -d --name kafka -p 9092:9092 kafka
(2)docker run -d --name elasticsearch -p 9200:9200 elasticsearch
(3)docker run -d -it --name kibana -p 5601:5601 --link elasticsearch:elasticsearch kibana
(4)docker run -d -it --name logstash --link elasticsearch:elasticsearch --link kafka:kafka logstash
注意:1 、Kafka 的advertised.listeners 要指向宿主机IP
2 、进行环境搭建前,需要设置vm.max_map_count( 进程中内存映射区域的最大数 量,默认值 65536 )
打开系统配置 vi /etc/sysctl.conf
vm.max_map_count=655360
sysctl -p
3、--link 代表使用别名映射到指定容器
Kafka相关概念
1、Broker:Kafka集群中的服务
2、Producer:消息生产方
3、Consumer:消息消费方
4、Topic:消息类型
Spring Boot整合Kafka实现Producer
① 引入依赖
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
② 配置文件
spring.kafka.producer.bootstrap-servers=192.168.9.150:9092
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
③ 编写客户端
@Autowired
pri