图片 1

开源实时日志分析ELK平台部署

Posted by

说明:1.基础环境Centos7,jdk7

开源实时日志分析ELK平台部署

2.本次使用的版本Elasticsearch:1.6.2Logstash:2.3.4Kibana:3.1.3

日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。

一、 下载elk三大组件Elasticsearch下载地址:

(目前最新版本:2.1.1)Logstash下载地址:

(目前最新版本:2.1.1)Kibana下载地址:
(目前最新版本:4.3.1)

通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。

二、 启动elasticsearch

集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。

2.1 配置及启动打开conf/elasticsearch.yml添加http.cors.enabled:
truehttp.cors.allow-origin:
“/.*/”为kibana访问elasticsearch配置进入elasticsearch目录bin./elasticsearch
start
&启动成功后,在浏览器输入”
: 200,”name” : “Illyana Rasputin”,”cluster_name” :
“elasticsearch”,”version” : {“number” : “1.6.2”,”build_hash” :
“622039121e53e5f520b5ff8720fdbd3d0cb5326b”,”build_timestamp” :
“2015-07-29T09:24:47Z”,”build_snapshot” : false,”lucene_version” :
“4.10.4”},”tagline” : “You Know, for Search”}2.2
安装插件在bin目录下输入./plugin list查看当前插件列表./plugin install
pluginName

开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。官方网站:https://www.elastic.co/products

三、 logstash的启动与配置3.1
在logstash主目录下创建conf目录,再在conf下创建logstash.conf编辑logstash.conf内容如下:input{tcp
{host => “127.0.0.1”port => 9999mode => “server”tags =>
[“tags”]codec => json_lines}stdin{}}

lElasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

output{stdout{codec => rubydebug}elasticsearch {hosts =>
[“127.0.0.1:9200”]index => “test”}}

lLogstash是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索)。

3.2 启动在logstash 的bin目录下,输入./logstash agent -f
../conf/logstash.conf稍等片刻,如果看到Logstash startup
completed,则表示启动成功。然后另开一个终端窗口,随便找个文本编辑工具,向/var/opt/log/a.log里写点东西,比如:hello
world之类,然后保存。观察logstash的终端运行窗口,是否有东西输出,如果有以下类似输出{“message”
=> “hello world”,”@version” => “1”,”@timestamp” =>
“2016-01-08T14:35:16.834Z”,”host” =>
“yangjunmingdeMacBook-Pro.local”,”path” => “/var/opt/log/a.log”}

lkibana也是一个开源和免费的工具,他Kibana可以为Logstash和ElasticSearch提供的日志分析友好的Web界面,可以帮助您汇总、分析和搜索重要数据日志。

四,kibana配置及启动4.1修改配置文件在kibana主目录下编辑config.js修改elasticsearch:
kibana-3.1.3
kibanaCp -r kibana
apache-tomcat启动tomcat在浏览器访问

工作原理如下如所示:

看到如下界面则安装成功

在需要收集日志的所有服务上部署logstash,作为logstash agent(logstash
shipper)用于监控并过滤收集日志,将过滤后的内容发送到logstash
indexer,logstash
indexer将日志收集在一起交给全文搜索服务ElasticSearch,可以用ElasticSearch进行自定义搜索通过Kibana来结合自定义搜索进行页面展示。

图片 1Paste_Image.png

开源实时日志分析ELK平台部署流程:

(1)安装Logstash依赖包JDK

Logstash的运行依赖于Java运行环境,Logstash 1.5以上版本不低于java
7推荐使用最新版本的Java。由于我们只是运行Java程序,而不是开发,下载JRE即可。首先,在Oracle官方下载新版jre,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html

可以看到提供了多种版本,下载时,选择适合自己机器运行环境的版本,我使用的是RHEL6.5
x86_64的操作系统,所以,下载linux-64的版本。如果使用Linux下载执行如下命令下载即可。

1

#wget 

JDK的安装方式比较简单,只需将下载回来的程序包解压到相应的目录即可。

1

2# mkdir /usr/local/java

# tar -zxf jdk-8u45-linux-x64.tar.gz -C /usr/local/java/

设置JDK的环境变量,如下:

1

2

3

4# tail -3 ~/.bash_profile

export JAVA_HOME=/usr/local/java/jdk1.8.0_45

export PATH=$PATH:$JAVA_HOME/bin

exportCLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH

在Shell提示符中执行java –version命令,显示如下结果,说明安装成功:

1

2

3

4# java -version

java version “1.8.0_45”

Java(TM) SE Runtime Environment (build 1.8.0_45-b14)

Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02,mixed mode)

(2)安装Logstash

下载并安装Logstash,安装logstash只需将它解压的对应目录即可,例如:/usr/local下:

1

2# 

# tar –zxf logstash-1.5.2.tar.gz -C /usr/local/

安装完成后运行如下命令:

1

2

3

4# /usr/local/logstash-1.5.2/bin/logstash -e ‘input { stdin { } } output { stdout {} }’

Logstash startup completed

Hello World!

2015-07-15T03:28:56.938Z noc.vfast.com Hello World!

我们可以看到,我们输入什么内容logstash按照某种格式输出,其中-e参数参数允许Logstash直接通过命令行接受设置。这点尤其快速的帮助我们反复的测试配置是否正确而不用写配置文件。使用CTRL-C命令可以退出之前运行的Logstash。

使用-e参数在命令行中指定配置是很常用的方式,不过如果需要配置更多设置则需要很长的内容。这种情况,我们首先创建一个简单的配置文件,并且指定logstash使用这个配置文件。例如:在logstash安装目录下创建一个“基本配置”测试文件logstash-test.conf,文件内容如下:

1

2

3

4

5# cat logstash-simple.conf

input { stdin { } }

output {

stdout { codec=> rubydebug }

}

Logstash使用input和output定义收集日志时的输入和输出的相关配置,本例中input定义了一个叫”stdin”的input,output定义一个叫”stdout”的output。无论我们输入什么字符,Logstash都会按照某种格式来返回我们输入的字符,其中output被定义为”stdout”并使用了codec参数来指定logstash输出格式。

使用logstash的-f参数来读取配置文件,执行如下开始进行测试:

1

2

3

4

5

6

7

8

9

10

11# echo “`date`  hello World”

Thu Jul 16 04:06:48 CST 2015 hello World

# /usr/local/logstash-1.5.2/bin/logstash agent -f logstash-simple.conf

Logstash startup completed

Tue Jul 14 18:07:07 EDT 2015 hello World   #该行是执行echo “`date`hello World” 后输出的结果,直接粘贴到该位置

{

“message” => “Tue Jul 14 18:07:07 EDT 2015 helloWorld”,

“@version” => “1”,

“@timestamp” => “2015-07-14T22:07:28.284Z”,

“host” => “noc.vfast.com”

}

(3)安装Elasticsearch

下载Elasticsearch后,解压到对应的目录就完成Elasticsearch的安装。

1

# tar -zxf elasticsearch-1.6.0.tar.gz -C /usr/local/

启动Elasticsearch

1

# /usr/local/elasticsearch-1.6.0/bin/elasticsearch

如果使用远程连接的Linux的方式并想后台运行elasticsearch执行如下命令:

1

# nohup /usr/local/elasticsearch-1.6.0/bin/elasticsearch >nohup &

确认elasticsearch的9200端口已监听,说明elasticsearch已成功运行

1

2# netstat -anp |grep :9200

tcp        0      0 :::9200                     :::*                        LISTEN      3362/java

接下来我们在logstash安装目录下创建一个用于测试logstash使用elasticsearch作为logstash的后端的测试文件logstash-es-simple.conf,该文件中定义了stdout和elasticsearch作为output,这样的“多重输出”即保证输出结果显示到屏幕上,同时也输出到elastisearch中。

1

2

3

4

5

6# cat logstash-es-simple.conf

input { stdin { } }

output {

elasticsearch {host => “localhost” }

stdout { codec=> rubydebug }

}

执行如下命令

1

2

3

4

5

6

7

相关文章

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注