ELK搭建实时日志分析系统

1 软件介绍

1.1 Elasticsearch

Elasticsearch is a distributed, RESTful search and analytics engine capable of solving a growing number of use cases. As the heart of the Elastic Stack, it centrally stores your data so you can discover the expected and uncover the unexpected.

Elasticsearch是一个分布式的RESTful搜索和分析引擎,能够解决越来越多的用例。 作为弹性堆栈的核心,它集中存储您的数据,所以你能够自主的操作您的数据。

大概意思是说,ES既可以为用户提供数据存储,有能为用户提供用户接口以作数据分析。

官网:https://www.elastic.co/products/elasticsearch

1.2 Logstash

Logstash is an open source, server-side data processing pipeline that ingests data from a multitude of sources simultaneously, transforms it, and then sends it to your favorite “stash.” (Ours is Elasticsearch, naturally.)

Logstash是一个开源的服务器端数据处理管道,它从多个源同时获取数据,对其进行转换,然后将其发送到您所想要的“存储”(这里主要是ES)。

大概意思是说,Logstash是一个不局限于数据源和目的源的数据管道工具,它提供了各种数据源插件,以供用户搜集、转换不同的日志。

官网:https://www.elastic.co/products/logstash

1.3 Kibana

Kibana lets you visualize your Elasticsearch data and navigate the Elastic Stack, so you can do anything from learning why you're getting paged at 2:00 a.m. to understanding the impact rain might have on your quarterly numbers.

Kibana让你可视化你的Elasticsearch数据和导航弹性堆栈。让您清晰的了解到您的但不局限于系统日志等信息的操作。

官网:https://www.elastic.co/products/kibana

2 环境搭建

2.1 软件环境要求

系统:CentOS 6.5 x86_64

Java:JDK 1.8_64bit

Nodejs:v6.10.0

软件:Elasticsearch-5.2.2、Logstash-5.2.2、Kibana-5.2.2-x86_64

2.2 Elasticsearch安装

说明:新版ES必须要使用普通用户启动,不能使用root用户。

1)下载ES安装包

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.2.tar.gz

~]#sudo tar -xvzf elasticsearch-5.2.2.tar.gz

2)修改ES的配置文件

编辑config下的elasticsearch.yml

cluster.name: elk-sdnware

node.name: elk-node1

node.attr.rack: r1

path.data: /home/esuser/es/data

path.logs: /home/esuser/es/logs

bootstrap.memory_lock: false

bootstrap.system_call_filter: false

network.host: 192.168.200.201

http.port: 9200

discovery.zen.ping.unicast.hosts: ["192.168.200.201", "[::1]"]

discovery.zen.minimum_master_nodes: 1

gateway.recover_after_nodes: 1

http.cors.enabled: true

http.cors.allow-origin: "*"

表1 - ES配置参数说明

参数含义

cluster.name    集群名称

node.name    节点名称

node.attr.rack    默认参数描述

path.dataES    数据文件

path.logsES    日志文件路径

bootstrap.memory_lock    是否锁定使用内存,为了不产生内存交换以保证性能(CentOS7以下不支持SecComp)

bootstrap.system_call_filter    同上

network.host    网络主机

http.port    HTTP端口

discovery.zen.ping.unicast.hosts    初始节点列表

discovery.zen.minimum_master_nodes    集群至少有n个master

gateway.recover_after_nodes    n个节点启动后开始数据恢复

http.cors.enabled    是否支持跨域

http.cors.allow-origin    当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使用正则表达式。比如只允许本地地址。 /https?:\/\/localhost(:[0-9]+)?/

3)启动ES

~/bin/elasticsearch >/dev/null 2>&1 &

启动成功后访问http://192.168.200.201:9200,如下图:


ELK搭建实时日志分析系统_第1张图片

4)安装Elasticsearch-head插件

该插件是为了方便简单的管理ES中的索引、集群等信息,新版head插件安装与老版ES有所差异,官方已经独立出来成为了一个插件库,需要独立安装。

a)下载head插件安装包

git clone git://github.com/mobz/elasticsearch-head.git

b)下载安装nodejs

wget https://nodejs.org/dist/v6.10.0/node-v6.10.0-linux-x64.tar.xz

tar -xvf node-v6.10.0-linux-x64.tar.xz

设置NODE环境变量,node -v、npm -v测试安装是否成功

c)进入刚下载的elasticsearch-head目录,执行npm install

~/elasticsearch-head/ ] # npm install

在执行安装head插件时会去下载phantomjs,网络不好情况下下载极慢而导致npm install执行失败,为了保证正常安装,建议下载好该安装包,默认放在/tmp/phantomjs/,当前版本使用的是phantomjs-2.1.1-linux-x86_64.tar.bz2,具体版本看安装时打印信息;

d)安装完成后,需要修改相应的web文件

i.修改服务器监听地址

目录:head/Gruntfile.js

connect: {

    server: {

        options: {

            port: 9100,

            hostname: '*',

            base: '.',

            keepalive: true

        }

    }

}

增加hostname属性,设置为*

ii.修改连接地址

目录:head/_site/app.js

修改head的连接地址:

this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";

把localhost修改成你es的服务器地址,如:

this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.200.201:9200";

e)启动head服务

elasticsearch-head ] # node_modules/grunt/bin/grunt server &

在此之前保证ES已经启动成功

打开http://192.168.200.201:9100,如下图:


ELK搭建实时日志分析系统_第2张图片

2.3 Logstash安装

1)下载Logstash安装包

https://artifacts.elastic.co/downloads/logstash/logstash-5.2.2.tar.gz

~]#sudo tar -xvzflogstash-5.2.2.tar.gz

2)添加Logstash的用户(agent)配置

vim log4jes.conf,内容如下:

input {

    log4j {

        mode => "server"

        host => "192.168.200.201"

        port => 4567

    }

}

filter {

#Only matched data are send to output.

}

output {

    elasticsearch {

        action => "index"

        hosts  => ["192.168.200.201:9200"]

        index  => "cloudap-%{+YYYY.MM.dd}"

    }

}

3)模拟Log4j的java应用

a)创建一个maven项目,结构如下:


ELK搭建实时日志分析系统_第3张图片

b)编辑Log4jDemo.java文件


ELK搭建实时日志分析系统_第4张图片

c)修改log4j.properties配置文件


ELK搭建实时日志分析系统_第5张图片

4)启动Logstash服务

logstash-5.2.2 ] # bin/logstash -f log4jes.conf>/dev/null 2>&1 &

启动成功后,运行java应用,然后打开elasticsearch-head,如图:


ELK搭建实时日志分析系统_第6张图片

会看到有cloudap-2017.03.08的索引,切换数据浏览,可以查看到详细的数据信息:


ELK搭建实时日志分析系统_第7张图片

2.4 Kibana安装

1)下载Kibana安装包

https://artifacts.elastic.co/downloads/kibana/kibana-5.2.2-linux-x86_64.tar.gz

~]#sudo tar -xvzf kibana-5.2.2-linux-x86_64.tar.gz

2)修改Kibana配置

kibana-5.2.2 ] # vim config/kibana.yml

server.port: 5601

server.host: “192.168.200.201”

elasticsearch.url: http://192.168.200.201:9200

kibana.index: “.kibana”

3)启动Kibana

kibana-5.2.2 ] #bin/kibana>/dev/null 2>&1 &

打开浏览器输入:http://192.168.200.201:5601

初始进入是,需要自行添加索引,如图:


ELK搭建实时日志分析系统_第8张图片

创建成功,后便可以针对索引进行数据的查看了。


ELK搭建实时日志分析系统_第9张图片

你可能感兴趣的:(ELK搭建实时日志分析系统)