1. ELK 和 Kafka 介绍LK 分别是由 Logstash(收集+分析)、
    ElasticSearch(搜索+存储)、Kibana(可视化展示)组成,主要是为了在海量的日志系统里面实现分布式日志数据集中式管理和查询,便于监控以及排查故障,极大方便微服务项目查看日志;
  • Logstash 接收应用系统的日志数据, 对进行过滤、分析、统一格式等操作对接,然后将其写入到 ElasticSearch 中;Logstash 可以支持 N 种 log 渠道:Kafka 日志队列对接读取、和 log 硬盘目录对接读取、Reids 中存储日志队列读取等等;
  • ElasticSearch 存储日志数据,是一种分布式搜索引擎,具有高可伸缩、高可靠、易管理等特点,可以用于全文检索、结构化检索和分析,并能将这三者结合起来;
  • Kibana 对存放在 ElasticSearch 中日志数据进行:数据展现、报表展现,并且是实时的;

        单纯使用 ELK 做日志系统,由于 Logstash 消耗系统资源比较大,运行时占用 CPU 和内存资源较高,且没有消息队列缓存,可能存在数据丢失的风险,只能适合于数据量小的环境使用;

        Apache Kafka 是消息中间件的一种,是一种分布式的,基于发布/订阅的消息系统。能实现一个为处理实时数据提供一个统一、每秒百万级别的高吞吐、低延迟的平台,且拥有分布式的,可划分的,冗余备份的持久性的日志服务等特点。

  1.         和采用 Redis 做轻量级消息队列不同,Kafka 利用磁盘作队列,所以也就无所谓消息缓冲时的磁盘问题;而且 Redis 作为集群使用时,对应的应用对应一个 Redis,在某种程度上会造成数据的倾斜性,从而导致数据的丢失,若对于数据量小的环境下使用 Redis 的队列替换 Kafka,效率和成本会很大提升;

 

日志收集到kafka kafka 日志_日志收集到kafka

  1. ELK Docker 环境搭建Docker 环境搭建可参考:Docker 快速入门和安装Github Elk Docker and Compose:https://github.com/deviantony/docker-elk   
    (0)、本机环境 CentOS7,其他环境大同小异;安装 Docker 环境(如已安装请忽略此步骤);
    (1)、Github 搜索 docker elk(下载地址如上链接),将其 clone 或下载到 linux 上,因机器问题,本文只安装单节点版;

     (2)、讲解一下 docker-compose.yml;

 (3)、进入到该目录,在有 docker-compose.yml 的目录使用下面的命令进行下载和启动(第一次下载会比较久);

#启动容器,方便控制台调试,第一次建议使用该命令进行下载和启动
docker-compose up
#后台启动容器
docker-compose up -d
#其他命令,查看 docker-compose --help
#安全关闭 docker-compose 
#docker-compose down -v

日志收集到kafka kafka 日志_数据_02

  注:若出现 -bash: docker-compose: command not found 时,解决如下:

# 1、先安装 pip ,检查是否已有;
pip -V 
# 2、若已安装 pip 则忽略此步骤 ,若报错 -bash: pip: command not found 请安装;
yum -y install epel-release
yum -y install python-pip
pip install --upgrade pip
# 3、安装Docker-Compose;
pip install docker-compose
# 4、检查是否安装成功;
docker-compose -version

 (4)、出现绿色 done 则表示下载完成并启动;开放端口 ,我这边使用的是阿里云,所以需要去云实例的安装组配置规则开放端口;

日志收集到kafka kafka 日志_数据_03

 

日志收集到kafka kafka 日志_Docker_04

 (5)、理解各个端口的作用,并访问 Elasticsearch 控制台和 Kibana 控制台;

5000: Logstash TCP input    #日志采集端口
9200: Elasticsearch HTTP    #控制台端口
9300: Elasticsearch TCP transport       #集群通信端口,作心跳检测
5601: Kibana      #控制台端口

Elasticsearch 控制台(默认用户名:elastic,密码:changeme,在 docker-compose.yml 修改),如下界面说明服务已成功启动:

日志收集到kafka kafka 日志_docker_05

 Kibana 控制台(默认用户名:elastic,密码:changeme,在 docker-elk-master/kibana/config下 kibana.yml 修改),如下界面说明服务已成功启动:

日志收集到kafka kafka 日志_Docker_06

  1. Kafka Docker 搭建Github Kafka Docker and Compose:https://github.com/wurstmeister/kafka-docker
    (0)、本机环境 CentOS7,其他环境大同小异;安装 Docker 环境(如已安装请忽略此步骤);        
    (1)、Github 搜索 docker kafka(下载地址如上链接),将其 clone 或下载到 linux 上,因机器问题,本文只安装单节点版;

     (2)、docker-compose.yml 会搭建多节点集群,本文不做演示,所以使用单节点文件 docker-compose-single-broker.yml;

     (3)、进入到该目录,在有 docker-compose.yml 的目录使用下面的命令进行下载和启动(第一次下载会比较久);
#第一次建议使用该命令进行下载和启动
docker-compose -f docker-compose-single-broker.yml up
#后台启动
docker-compose -f docker-compose-single-broker.yml up -d

日志收集到kafka kafka 日志_Docker_07

 (4)、出现绿色 done 则表示下载完成并启动,查看运行状态;

docker-compose ps

日志收集到kafka kafka 日志_数据_08

  1. 关联 Logstash 和 Kafka(1)、修改 logstash.conf 配置(在 docker-elk-master/logstash/pipeline 里);
input {
  #tcp {
  #  port => 5000
  #}
  kafka {
        id => "my_plugin_id"
        bootstrap_servers => "localhost:9092"
        topics => ["test"]
        auto_offset_reset => "latest"
    }
}

日志收集到kafka kafka 日志_数据_09

 (2)、重新启动 Logstash;

docker-compose restart logstash

日志收集到kafka kafka 日志_docker_10