ELK学习总结【第一篇】:ELK概述

ELK简介

  ELK Stack 是 Elasticsearch、Logstash、Kibana 三个开源软件的组合。在实时数据检索和分析场合,三者通常是配合共用,而且又都先后归于 Elastic.co 公司名下,故有此简称。

  ELK Stack 在最近两年迅速崛起,成为机器数据分析,或者说实时日志处理领域,开源界的第一选择。和传统的日志处理方案相比,ELK Stack 具有如下几个优点:

  • 处理方式灵活:Elasticsearch 是实时全文索引,不需要像 storm 那样预先编程才能使用;
  • 配置简易上手:Elasticsearch 全部采用 JSON 接口,Logstash 是 Ruby DSL 设计,都是目前业界最通用的配置语法设计;
  • 检索性能高效:虽然每次查询都是实时计算,但是优秀的设计和实现基本可以达到全天数据查询的秒级响应;
  • 集群线性扩展:不管是 Elasticsearch 集群还是 Logstash 集群都是可以线性扩展的;
  • 前端操作炫丽:Kibana 界面上,只需要点击鼠标,就可以完成搜索、聚合功能,生成炫丽的仪表板。

当然,ELK Stack 也并不是实时数据分析界的灵丹妙药。在不恰当的场景,反而会事倍功半。

官网地址:https://www.elastic.co

ELK工作原理

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

服务器端部署及配置

安装JDK

[root@elk ~]# java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)

安装logstash

[root@elk ~]# rpm -ivh logstash-2.1.0-1.noarch.rpm

安装Redis

[root@elk ~]# yum install redis -y
[root@elk ~]# /etc/init.d/redis start
[root@elk ~]# chkconfig redis on

安装elasticsearch

[root@elk ~]# rpm -ivh elasticsearch-2.0.0.rpm 
warning: elasticsearch-2.0.0.rpm: Header V4 RSA/SHA1 Signature, key ID d88e42b4: NOKEY
Preparing...                ########################################### [100%]
Creating elasticsearch group... OK
Creating elasticsearch user... OK
   1:elasticsearch          ########################################### [100%]
### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using chkconfig
 sudo chkconfig --add elasticsearch
### You can start elasticsearch service by executing
 sudo service elasticsearch start
[root@elk ~]# chkconfig --add elasticsearch
[root@elk ~]# /etc/init.d/elasticsearch start
正在启动 elasticsearch:                                   [确定]
[root@elk ~]# chkconfig elasticsearch on
[root@elk ~]# netstat -tunlp|grep :9
tcp        0      0 ::1:9200                    :::*                        LISTEN      10966/java          
tcp        0      0 ::ffff:127.0.0.1:9200       :::*                        LISTEN      10966/java          
tcp        0      0 ::1:9300                    :::*                        LISTEN      10966/java          
tcp        0      0 ::ffff:127.0.0.1:9300       :::*                        LISTEN      10966/java    

安装kibana

[root@elk~]# yum install ruby rubygems -y
[root@elk~]# gem install bundler
[root@elk ~]# tar -zxf kibana-4.2.1-linux-x64.tar.gz -C /application/
[root@elk kibana-4.2.1-linux-x64]# useradd kibana
[root@elk kibana-4.2.1-linux-x64]# chown -R kibana:kibana /application/kibana-4.2.1-linux-x64/
[root@elk kibana-4.2.1-linux-x64]# /application/kibana-4.2.1-linux-x64/bin/kibana serve &

 

客户端部署及配置

安装JDK

[root@elk ~]# java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)

安装logstash

[root@elk ~]# rpm -ivh logstash-2.1.0-1.noarch.rpm
[root@logstash01 ~]# cat /etc/logstash/conf.d/agent.conf 
input {
  file { path => "/var/log/command.log" }  # logstash用户需要对文件有读权限
 }
output {
     redis {
          host => "172.16.1.129"          # redis IP地址
          data_type => "list"
          key => "logstash:redis"
        }
}
[root@elk ~]# /etc/init.d/logstash start
[root@elk ~]# chkconfig logstash on

验证logstash与redis结合是否正常

查看redis的监控接口上的输出
# ./redis-cli monitor
OK
1444315328.103928 [0 192.168.1.104:56211] "rpush" "logstash:redis" "{\"message\":\"dajihaolinux\",\"@version\":\"1\",\"@timestamp\":\"2015-10-08T14:42:07.550Z\",\"host\":\"0.0.0.0\"}"
如果redis的监控上也有以上信息输出,表明logstash和redis的结合是正常的。

 

posted @ 2016-07-23 21:17  每天进步一点点!!!  阅读(1806)  评论(0编辑  收藏  举报