技术集中式日志系统ELK协议栈详解

简介

在我们日常生活中,我们经常需要回顾以前发生的一些事情;或者,当出现了一些问题的时候,可以从某些地方去查找原因,寻找发生问题的痕迹。无可避免需要用到文字的、图像的等等不同形式的记录。用计算机的术语表达,就是LOG,或日志。

日志,对于任何系统来说都是及其重要的组成部分。在计算机系统里面,更是如此。但是由于现在的计算机系统大多比较复杂,很多系统都不是在一个地方,甚至都是跨国界的;即使是在一个地方的系统,也有不同的来源,比如,操作系统,应用服务,业务逻辑等等。他们都在不停产生各种各样的日志数据。根据不完全统计,我们全球每天大约要产生2EB()的数据。

面对如此海量的数据,又是分布在各个不同地方,如果我们需要去查找一些重要的信息,难道还是使用传统的方法,去登陆到一台台机器上查看?看来传统的工具和方法已经显得非常笨拙和低效了。于是,一些聪明人就提出了建立一套集中式的方法,把不同来源的数据集中整合到一个地方。

一个完整的集中式日志系统,是离不开以下几个主要特点的。

收集-能够采集多种来源的日志数据

传输-能够稳定的把日志数据传输到中央系统

存储-如何存储日志数据

分析-可以支持UI分析

警告-能够提供错误报告,监控机制

市场上的产品

基于上述思路,于是许多产品或方案就应运而生了。比如,简单的Rsyslog,Syslog-ng;商业化的Splunk;开源的有FaceBook公司的Scribe,Apache的Chukwa,Linkedin的Kafak,Cloudera的Fluentd,ELK等等。

在上述产品中,Splunk是一款非常优秀的产品,但是它是商业产品,价格昂贵,让许多人望而却步。

直到ELK的出现,让大家又多了一种选择。相对于其他几款开源软件来说,本文重点介绍ELK。

ELK协议栈介绍及体系结构

ELK其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写,Elasticsearch,Logstash和Kibana。这三款软件都是开源软件,通常是配合使用,而且又先后归于Elastic.co公司名下,故被简称为ELK协议栈,见图1。

图1.ELK协议栈Elasticsearch

Elasticsearch是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。它是一个建立在全文搜索引擎ApacheLucene基础上的搜索引擎,使用Java语言编写。目前,最新的版本是2.1.0。

主要特点

实时分析

分布式实时文件存储,并将每一个字段都编入索引

文档导向,所有的对象全部是文档

高可用性,易扩展,支持集群(Cluster)、分片和复制(Shards和Replicas)。见图2和图

接口友好,支持JSON

图2.集群图.分片和复制Logstash

Logstash是一个具有实时渠道能力的数据收集引擎。使用JRuby语言编写。其作者是世界著名的运维工程师乔丹西塞(JordanSissel)。目前最新的版本是2.1.1。

主要特点

几乎可以访问任何数据

可以和多种外部应用结合

支持弹性扩展

它由三个主要部分组成,见图4:

Shipper-发送日志数据

Broker-收集数据,缺省内置Redis

Indexer-数据写入

图4.Logstash基本组成

Kibana

Kibana是一款基于Apache开源协议,使用JavaScript语言编写,为Elasticsearch提供分析和可视化的Web平台。它可以在Elasticsearch的索引中查找,交互数据,并生成各种维度的表图。目前最新的版本是4.,简称Kibana4。

ELK协议栈体系结构

完整的ELK协议栈体系结构见图。基本流程是Shipper负责从各种数据源里采集数据,然后发送到Broker,Indexer将存放在Broker中的数据再写入Elasticsearch,Elasticsearch对这些数据创建索引,然后由Kibana对其进行各种分析并以图表的形式展示。

图.ELK协议栈体系结构

ELK三款软件之间互相配合使用,完美衔接,高效的满足了很多场合的应用,并且被很多用户所采纳,诸如路透社,脸书(Facebook),StackOverFlow等等。

ELK的安装及配置

这一部分,我将描述一下如何安装配置ELK协议栈。

选取的实验平台为

Ubuntu14.04

Centos7.1

其中用到的软件如下

Elasticsearch使用的是2.1.0

Logstash使用的是2.1.1

Kibana使用的是4..0

除此之外,还需要用到以下软件,Nginx,Logstash-forwarder以及JDK。

实验系统架构见图6。

图6.实验系统架构

值得注意的是,在我们的实验中,使用了Nginx的反向代理,使得用户可以从外部访问到Kibana,并且它本身具有负载均衡的作用,也能够提高性能。

特别还提到一下Logstash-forwarder,这是一款使用Go语言编写的日志传输工具。由于Logstash是使用Java来运行,为了提升网络传输效率,我们并不在客户系统上面使用Logstash来传输数据。这款软件就是原来的Lumberjack,今后慢慢将被Elastic.co公司的另外一款产品Beat吸收合并到Filebeat中,这个超出本文叙述的范畴,就不在这里详细讨论了。

具体安装过程如下

步骤1,安装JDK

步骤2,安装Elasticsearch

步骤,安装Kibana

步骤4,安装Nginx

步骤,安装Logstash

步骤6,配置Logstash

步骤7,安装Logstash-forwarder

步骤8,最终验证

安装前的准备

两台64位虚拟机,操作系统是Ubuntu14.04,2CPU,4G内存,0G硬盘

两台64位虚拟机,操作系统是CentOS7.1,2CPU,4G内存,0G硬盘

创建用户elk和组elk,以下所有的安装均由这个用户操作,并授予sudo权限

如果是CentOS,还需要配置官方YUM源,可以访问CentOS软件包

注意:以下所有操作都是在两个平台上完成。

步骤1,安装JDK

Elasticsearch要求至少Java7。一般推荐使用OracleJDK1.8或者OpenJDK1.8。我们这里使用OpenJDK1.8。

Ubuntu14.04

加入Java软件源(Repository)

$sudoadd-apt-repositoryppa:openjdk-r/ppa

更新系统并安装JDK

$sudoapt-getupdate$sudoapt-getinstallopenjdk-8-jdk

验证Java

$java-versionopenjdkversion"1.8.0_4-internal"OpenJDKRuntimeEnvironment(build1.8.0_4-internal-b14)OpenJDK64-BitServerVM(build2.4-b02,mixedmode)

CentOS7.1

配置YUM源

$cd/etc/yum.repos.d$sudovicentos.repo

加入以下内容

[base]name=CentOS-$releasever-Basemirrorlist=







































白殿疯的专科医院
白殿疯病



转载请注明:http://www.guyukameng.com/jsp/8444.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了