ELK(ElasticSearch,Logstash,Kibana)搭建实时日志分析平台

2019-11-02 作者:计算机知识   |   浏览(52)

系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。日志的作用不言而喻,但对于数量庞大且分布在多台机器上的日志,查看就显得特别麻烦了。所以,对于运维人员来说,使用日志分析系统是非常有必要的。

ELK平台介绍

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

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

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

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

  • Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
  • Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。
  • Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

画了一个ELK工作的原理图:

图片 1

如图:Logstash收集AppServer产生的Log,并存放到ElasticSearch集群中,而Kibana则从ES集群中查询数据生成图表,再返回给Browser。

日志分析ELK平台,由ElasticSearch、Logstash和Kiabana三个开源工具组成。

开源实时日志分析ELK平台能够实现日志的监控与分析,ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。官方网站:

ELK平台搭建

官方网站:

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

系统环境

System: CentOS release 6.6 (Final)

ElasticSearch: elasticsearch-5.3.0.tar.gz

Logstash: logstash-5.3.0.tar.gz

Kibana: kibana-5.3.0-linux-x86_64.tar.gz

Java: openjdk version  ”1.8.0_51″

ELK官网下载:

图片 2

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

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

ElasticSearch

配置ElasticSearch:

  useradd elk              #ES不允许root启动服务

tar -zxvf elasticsearch-5.3.0.tar.gz

cd elasticsearch-5.3.0

vi config/elasticsearch.yml

 

修改以下配置项:

cluster.name: es_cluster
node.name: node0
path.data: /tmp/elasticsearch/data
path.logs: /tmp/elasticsearch/logs
network.host: 172.16.160.122
http.port: 9200

 

其他的选项保持默认,然后启动ES:

  su elk

./bin/elasticsearch &

  3、

补:启动异常:ERROR: bootstrap checks failed
  system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

  问题原因:因为Centos6不支持SecComp,而ES5.2.1默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。

  解决方法:在elasticsearch.yml中配置,注意要在Memory下面:
  bootstrap.memory_lock: false

  bootstrap.system_call_filter: false

 

图片 3

可以看到,它跟其他的节点的传输端口为9300,接受HTTP请求的端口为9200。

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

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

Logstash

Logstash的功能如下:

图片 4

其实它就是一个 收集器 而已,我们需要为它指定Input和Output(当然Input和Output可以为多个)。由于我们需要把Java代码中Log4j的日志输出到ElasticSearch中,因此这里的Input就是Log4j,而Output就是ElasticSearch。

配置Logstash:

tar -zxvf logstash-5.3.0.tar.gz
cd logstash-5.3.0

 

编写配置文件(名字和位置可以随意,这里我放在config目录下,取名为log4j_to_es.conf):

mkdir config
vi config/a_es.conf

input {
        file {
        path => "/tmp/a.log"                                    #创建的测试日志文件
    }
}
filter {

}
output {
        stdout { codec => rubydebug }
        elasticsearch {
                index => "test_%{+YYYY.MM.dd}"        #索引信息
                hosts => [ "172.16.160.122:9200" ]
        }
}

 

    ./bin/logstash -f config/a_es.conf  &            #启动服务

 

如下图,证明通信无误

图片 5

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

ELK工作流程大致如下:

Kibana

配置Kibana:

tar -zxvf kibana-4.3.0-linux-x86.tar.gz
cd kibana-4.3.0-linux-x86
vi config/kibana.yml

server.port: 5601
server.host: "172.16.160.122"
elasticsearch.url: http://172.16.160.122:9200
kibana.index: ".kibana.yml"

./bin/kibana

图片 6

Elasticsearch1.7.3升级到2.4.2过程笔记  http://www.linuxidc.com/Linux/2017-03/142137.htm

ElasticSearch 基础和集群搭建  http://www.linuxidc.com/Linux/2017-02/140491.htm

Elasticsearch的安装,运行和基本配置 http://www.linuxidc.com/Linux/2016-07/133057.htm

使用Elasticsearch + Logstash + Kibana搭建日志集中分析平台实践  http://www.linuxidc.com/Linux/2015-12/126587.htm

Ubuntu 14.04搭建ELK日志分析系统(Elasticsearch+Logstash+Kibana) http://www.linuxidc.com/Linux/2016-06/132618.htm

Elasticsearch1.7升级到2.3实践总结  http://www.linuxidc.com/Linux/2016-11/137282.htm

Ubuntu 14.04中Elasticsearch集群配置  http://www.linuxidc.com/Linux/2017-01/139460.htm

Elasticsearch-5.0.0移植到Ubuntu 16.04  http://www.linuxidc.com/Linux/2017-01/139505.htm

ElasticSearch 的详细介绍:请点这里
ElasticSearch 的下载地址:请点这里 

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-04/142772.htm

图片 7

ELK原理图:
图片 8

图片 9

如图:Logstash收集AppServer产生的Log,并存放到ElasticSearch集群中,而Kibana则从ES集群中查询数据生成图表,再返回给Browser。

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

ELK平台搭建
系统环境
System: CentOS release 6.7(Final)
ElasticSearch: elasticsearch-5.3.1.tar.gz
Logstash: logstash-5.3.1.tar.gz
Kibana: kibana-5.3.1-linux-x86_64.tar.gz
Java: openjdk version  ”1.8.0_131″

ELK平台搭建:

ELK官网下载:

基于Ubuntu 14.04 64位操作系统搭建

图片 10

下载ELK安装包:

JAVA环境配置

图片 11

下载最新版本1.8.0_131

下载jdk安装包:

cd /tmp/

图片 12

wget

下载完的数据包:

tar zxf jdk-8u131-linux-x64.tar.gz -C /usr/local/
vim /etc/profile
添加如下内容
JAVA_HOME=/usr/local/jdk1.8.0_131

图片 13

PATH=$JAVA_HOME/bin:$PATH

1.安装依赖包jdk8:

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

1
2
#sudo mkdir /usr/lib/jvm
#tar xvzf jdk-8u91-linux-x64.tar.gz -C /usr/lib/jvm/

export JAVA_HOME PATH CLASSPATH

1
#vim ~/.bashrc

source /etc/profile

在文档最下部追加

ElasticSearch配置
wget
  useradd elktest           

1
2
3
4
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_91
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

tar -zxvf elasticsearch-5.3.1.tar.gz
cd elasticsearch-5.3.1
vi config/elasticsearch.yml

1
执行:source ~/.bashrc

修改以下配置项:
(路径需要先自行创建,并且elktest用户可读写)
cluster.name: elk_cluster
node.name: node0
path.data: /tmp/elasticsearch/data
path.logs: /tmp/elasticsearch/logs
network.host: 192.168.1.5
http.port: 9200

执行java -version和java,有相应数据即安装完成。

其他的选项保持默认,然后启动ES:
  su elktest            #ES不允许root启动服务 必须是普通用户
./bin/elasticsearch &

2.安装Logstash:

配置Logstash
wget
tar -zxvf logstash-5.3.1.tar.gz
cd logstash-5.3.1

1
#tar xvzf logstash-2.3.3.tar.gz

vi config/test_es.conf

在logstash-2.3.3目录下创建logstash-test.conf配置文件,内容如下:

input {
        file {
        path => "/tmp/test.log"          #测试文件
    }
}
filter {

1
2
3
4
5
6
# cat logstash-test.conf
  
input { stdin { } }
output {
   stdout { codec=> rubydebug }
}

}
output {
        stdout { codec => rubydebug }
        elasticsearch {
                index => "test_%{+YYYY.MM.dd}"        #索引信息
                hosts => [ "192.168.1.5:9200" ]
        }
}

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

    ./bin/logstash -f config/test_es.conf  &            #启动服务

使用如下命令启动:

配置Kibana:
wget
tar -zxvf kibana-5.3.1-linux-x86.tar.gz
cd kibana-5.3.1-linux-x86
vi config/kibana.yml

1
# ./bin/logstash agent -f logstash-test.conf

server.port: 5601
server.host: "192.168.1.5"
elasticsearch.url:
kibana.index: ".kibana.yml"

启动后,你在屏幕上输入什么内容,就会在console里显示出来。如输入"hehe",显示如下:

./bin/kibana

图片 14

部署中的常见错误及解决方法

说明安装成功。使用Ctrl+C退出进程。

1、启动 elasticsearch 如出现异常  can not run elasticsearch as root 
解决方法:创建ES 账户,修改文件夹 文件 所属用户 组

本文由大发体育发布于计算机知识,转载请注明出处:ELK(ElasticSearch,Logstash,Kibana)搭建实时日志分析平台

关键词: