一、概述

ELK是由Elastic公司开发的Elasticsearch、Logstash、Kibana三款开源软件的缩写(但不限于这三款软件)。

为什么使用ELK?

  在目前流行的微服务架构中,一个大型应用可能会被划分成几十甚至上百个微服务,这些微服务产生的日志也会分布在不同的服务器不同的目录下,按常规方式进行日志检查你会频繁登录每台服务器查找日志,所以你可能需要一个集中化的日志管理平台。

  如果要对这些日志进行数据分析,常规方式可采用hadoop或spark等大数据技术手段来进行数据分析,但终究这些方式需要编写代码和相关专业知识,时间、人力成本略高,所以你可能需要一个开箱即用的搜索、聚合、可视化的数据分析平台。

  综上所述,ELK首先是一个集中化日志管理平台,但同时也是一个快速的可视化数据分析平台。

架构选择

  ELK架构很灵活,不同的架构适合不同的场景。

  在文章末尾提供了一个链接,可作为不同架构方式的参考。

二、服务架构

上图中分为4层,含义如下:

1、filebeat日志采集端,采集日志并将日志发送到kafka;

2、kafka+zookeeper集群,用于中转、缓冲海量日志;

3、logstash从kafka中拉取日志,并过滤、转发到elasticsearch中;

4、elasticsearch集群,用于存储日志;kibana将海量日志可视化展示、统计;

三、服务器\软件准备

服务器ip 192.168.1.101 192.168.1.102 192.168.1.103 192.168.1.104 192.168.1.105 192.168.1.106 192.168.1.107 192.168.1.108
安装软件 filebeat kafka+zookeeper kafka+zookeeper logstash elasticsearch dataNode elasticsearch dataNode elasticsearch dataNode elasticsearch masterNode+kibana

一共涉及6个软件包

四、软件安装

1、安装zookeeper

192.168.1.102、192.168.1.103两台服务器分别安装配置zookeeper集群

#安装目录/usr/local/zookeeper-3.4.13
>tar -zxvf zookeeper-3.4.13.tar.gz -C /usr/local/
>cd /usr/local/zookeeper-3.4.13/conf/
>cp zoo_sample.cfg zoo.cfg
>vim zoo.cfg
#修改以下配置
dataDir=/usr/local/zookeeper-3.4.13/zookeeper
server.1=192.168.1.102:12888:13888
server.2=192.168.1.103:12888:13888 #server.1执行(重要)
>echo 1 > /usr/local/zookeeper-3.4.13/zookeeper/myid
#server.2执行(重要)
>echo 2 > /usr/local/zookeeper-3.4.13/zookeeper/myid #两台服务器分别启动zookeeper
>cd /usr/local/zookeeper-3.4.13/bin/
>./zkServer.sh start
>netstat -lntp |grep 2181

2、安装kafka

192.168.1.102、192.168.1.103两台服务器分别安装配置kafka

#解压到/usr/local/kafka_2.11-2.0.1
>tar -zxvf kafka_2.11-2.0.1.tgz -C /usr/local/kafka_2.11-2.0.1
>cd /usr/local/kafka_2.11-2.0.1/config/
#修改以下配置文件
#注:两台服务器中broker.id、host.name需分别配置
>vim server.properties
broker.id=1
port = 9092
host.name = 192.168.1.102
log.dirs=/var/log/kafka
log.retention.hours=1
zookeeper.connect=192.168.1.102:2181,192.168.1.103:2181
default.replication.factor=2 #启动kafka服务,两台服务器中分别启动
>cd /usr/local/kafka_2.11-2.0.1/config
>./kafka-server-start.sh -daemon ../config/server.properties

验证kafka队列服务,正常情况下在生产者端输入数据并发送,消费者端会收到并打印数据

#创建消息主题
>./kafka-topics.sh --create --zookeeper 192.168.1.102:2181 --replication-factor 1 --partitions 2 --topic logs
#创建消息生产者
>./kafka-console-producer.sh --broker-list 192.168.1.102:9092 --topic logs
#创建消息消费者
>./kafka-console-consumer.sh --bootstrap-server 192.168.1.102:9092 --topic logs

3、安装logstash

192.168.1.104安装配置logstash

#通过rpm安装logstash
>rpm -ivh logstash-6.0.0.rpm
#配置数据的输入输出
>vim /etc/logstash/conf.d/syslog.conf
input {
kafka {
bootstrap_servers => "localhost:9092"
topics => ["logs"]#使用上文中创建的消息主题
}
} output {
elasticsearch {
hosts => ["localhost:9200"]
index => "logs-%{+YYYY.MM.dd}"
}
}
#启动服务
>systemctl start logstash

4、安装elasticsearch

192.168.1.108安装配置elasticsearch
#使用rpm方式安装软件
>rpm -ivh elasticsearch-6.0.0.rpm
#编辑配置
>vim /etc/elasticsearch/elasticsearch.yml
cluster.name: master-node # 集群中的名称
node.name: master # 该节点名称
node.master: true # 意思是该节点为主节点
node.data: false # 表示这不是数据节点
network.host: 0.0.0.0 # 监听全部ip,在实际环境中应设置为一个安全的ip
http.port: 9200 # es服务的端口号
discovery.zen.ping.unicast.hosts: ["192.168.1.105", "192.168.1.106", "192.168.1.107", "192.168.1.108"] # 配置自动发现
#启动服务
>systemctl start elasticsearch
#验证
>ps aux |grep elasticsearch
>curl 'localhost:9200/_cluster/health?pretty'
注:"192.168.1.105", "192.168.1.106", "192.168.1.107" 按照同样方法安装配置,但需要修改node.name、node.master改为false、node.data改为true

5、安装kibana

192.168.1.108安装配置kibana
>rpm -ivh kibana-6.0.0-x86_64.rpm
#编辑配置
>vim /etc/kibana/kibana.yml
elasticsearch.url: "http://192.168.1.108:9200"
logging.dest: /var/log/kibana.log #创建日志文件
>touch /var/log/kibana.log
>chmod 777 /var/log/kibana.log #启动服务
>systemctl start kibana #验证服务
>ps aux |grep kibana
>netstat -lntp |grep 5601

至此,服务架构中第2、3、4层已安装完毕

6、安装filebeat(日志采集端)

192.168.1.101安装配置filebeat

>rpm -ivh  filebeat-6.0.0-x86_64.rpm
#修改或增加以下配置文件
>vi /etc/filebeat/filebeat.yml filebeat.prospectors:
- type: log
enabled: true
paths:
- /opt/*.out #日志目录 #日志数据输出到kafka
output.kafka:
enabled: true
hosts: ["172.17.224.159:9092"]
topic: ecplogs #启动并验证服务
>systemctl start filebeat
>ps axu |grep filebeat

五、验证

用浏览器打开kibana:http://192.168.1.108:5601

安装工作告一段落

参考博客:

Elastic Stack的演进

Elastic Stack的演进

快速构建大数据存储分析平台-ELK平台安装的更多相关文章

  1. 大数据 -- Cloudera Manager(简称CM)+CDH构建大数据平台

    一.Cloudera Manager介绍 Cloudera Manager(简称CM)是Cloudera公司开发的一款大数据集群安装部署利器,这款利器具有集群自动化安装.中心化管理.集群监控.报警等功 ...

  2. CDH构建大数据平台-配置集群的Kerberos认证安全

     CDH构建大数据平台-配置集群的Kerberos认证安全 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 当平台用户使用量少的时候我们可能不会在一集群安全功能的缺失,因为用户少,团 ...

  3. 在HDInsight中从Hadoop的兼容BLOB存储查询大数据的分析

    在HDInsight中从Hadoop的兼容BLOB存储查询大数据的分析 低成本的Blob存储是一个强大的.通用的Hadoop兼容Azure存储解决方式无缝集成HDInsight.通过Hadoop分布式 ...

  4. CDH构建大数据平台-使用自建的镜像地址安装Cloudera Manager

    CDH构建大数据平台-使用自建的镜像地址安装Cloudera Manager 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.搭建CM私有仓库 详情请参考我的笔记: http ...

  5. CDH构建大数据平台-Kerberos高可用部署【完结篇】

    CDH构建大数据平台-Kerberos高可用部署[完结篇] 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  一.安装Kerberos相关的软件包并同步配置文件 1>.实验环境 ...

  6. Storm 实战:构建大数据实时计算

    Storm 实战:构建大数据实时计算(阿里巴巴集团技术丛书,大数据丛书.大型互联网公司大数据实时处理干货分享!来自淘宝一线技术团队的丰富实践,快速掌握Storm技术精髓!) 阿里巴巴集团数据平台事业部 ...

  7. SpringBoot构建大数据开发框架

    http://blog.51cto.com/yixianwei/2047886 为什么使用SpringBoot 1.web工程分层设计,表现层.业务逻辑层.持久层,按照技术职能分为这几个内聚的部分,从 ...

  8. MapGis如何实现WebGIS分布式大数据存储的

    作为解决方案厂商,MapGis是如何实现分布式大数据存储的呢? MapGIS在传统关系型空间数据库引擎MapGIS SDE的基础之上,针对地理大数据的特点,构建了MapGIS DataStore分布式 ...

  9. Sqlserver 高并发和大数据存储方案

    Sqlserver 高并发和大数据存储方案 随着用户的日益递增,日活和峰值的暴涨,数据库处理性能面临着巨大的挑战.下面分享下对实际10万+峰值的平台的数据库优化方案.与大家一起讨论,互相学习提高!   ...

随机推荐

  1. 经典linux书籍

    入门篇<LINUX权威指南>书不错,写的很全面也比较广,涉及的不深,做为入门书籍不错,可以比较全面的了解linux .另外比较热门的也可以看看<鸟哥的私房菜>等书,偏管理类的书 ...

  2. 花匠(NOIP2013)(神奇纯模拟)

    原题传送门 这是道很奇怪的题目,真不知道为什么要放到T2. 也许是T1太水了 首先先看题, 题目要求一个数列中下标为偶数的点比临近的下表为奇数的点更大或更小 其实就是说在原数组中找到一个最长的波动数列 ...

  3. Unicode与UTF-8互转(C语言实现) 基本原理

    1. 基础 1.1 ASCII码 我们知道, 在计算机内部, 所有的信息最终都表示为一个二进制的字符串. 每一个二进制位(bit)有0和1两种状态, 因此八个二进制位就可以组合出 256种状态, 这被 ...

  4. UVA 10359 Tiling

    考虑最左边一列和最左边两列分别可以一个纵方块:2个横方块+2*2: 则f[i]=f[i-1]+2f[i-2]; #include <map> #include <set> #i ...

  5. C语言中函数strcpy ,strncpy ,strlcpy的用法【转】

    转自:http://blog.chinaunix.net/uid-20797562-id-99311.html strcpy ,strncpy ,strlcpy的用法好多人已经知道利用strncpy替 ...

  6. 解析Linux内核的基本的模块管理与时间管理操作---超时处理【转】

    转自:http://www.jb51.net/article/79960.htm 这篇文章主要介绍了Linux内核的基本的模块管理与时间管理操作,包括模块加载卸载函数的使用和定时器的用法等知识,需要的 ...

  7. dll共享段中一些需要注意的问题

    Visual C++ 如何与应用程序或其他 DLL 共享自己 DLL 中的数据? Win32 DLL 映射到调用进程的地址空间中.默认情况下,每个使用 DLL 的进程都有自己的所有 DLL 全局变量和 ...

  8. Appium+python自动化2-环境搭建(下)【转载】

    前言    上一篇android测试开发环境已经准备好, 接下来就是appium的环境安装了.环境安装过程中切勿浮躁,按照步骤一个个来. 环境装好后,可以用真机连电脑,也可以用android-sdk里 ...

  9. 树上各种DFS姿势算法笔记

    树是指由n个点,n-1条边构成的联通无向图.如果有一棵树,它的每一条边(u,v)都有一个权值l(u,v),我们把这样的树称作带权树. 我们知道对于树上的任意两个点,他们之间的路径是唯一的.对于两个点u ...

  10. csu1811(树上启发式合并)

    csu1811 题意 给定一棵树,每个节点有颜色,每次仅删掉第 \(i\) 条边 \((a_i, b_i)\) ,得到两颗树,问两颗树节点的颜色集合的交集. 分析 转化一下,即所求答案为每次删掉 \( ...