• 用logstash,elasticSearch,kibana实现数据收集和统计分析工作


    原文链接:http://www.open-open.com/lib/view/open1448799635720.html

    世界上的软件80%是运行在内网的,为了使得运行在客户端的软件有良好的体验,并且得到有用的数据,我们需要对这些系统产生的数据,进行统计和分析,这个过程通常包括数据采集,清洗,建模,分析,报表等。接下来在本篇文章中,将会构建一个基于logstash,elasticSearch,kibana的一套数据收集分析的系统

    一、框架概要

    用logstash,elasticSearch,kibana实现数据收集和统计分析工作

    logstash实时的从业务日志中数据数据(可以进行响应的过滤),然后把数据输入到redis中,redis只做消息队列不对消息做处理和存储,然后redis会把数据转给elasticSearch,elasticSearch会对数据做存储,索引(基于Lunce),再kibana中建立对elasticSearch的链接,实时的抓取索索引后的数据,这样数据就可以实时的进行展示,通过一些数据组装,查询条件,得到我们想要的结果(可以通过各种方式例如图表,表格,折线图等显示)

    接下来的第二章节讲述所需软件以及安装

    二、所需软件

    Redis(https://www.elastic.co/)

    kibana(https://download.elastic.co/kibana/kibana/kibana-4.1.3-linux-x64.tar.gz)

    logstash(https://download.elastic.co/logstash/logstash/logstash-2.1.0.zip)

    Elasticsearch

    https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.1.0/elasticsearch-2.1.0.tar.gz

    对于kibana,logstash,Elasticsearch 这三件套,也可以是直接去下载套装(https://www.elastic.co/downloads

    用logstash,elasticSearch,kibana实现数据收集和统计分析工作

    把软件包均上传到/opt/tools文件夹下,软件均安装在/opt文件夹下

    三、安装

    软件的安装和运行,最好不要使用root用户,因为里面有些软件,必须要求非root用于才可以正常的运行。

    1、 卸载自带的jdk 安装jdk

    上传下载的jdk rpm包

    安装:

    rpm –ivh  
    jdk-8u65-linux-x64.rpm

    通过命令查看jdk版本是否安装成功,安装完成它会自动的配置环境变量等相关信息

    java -version
    java version "1.8.0_65"
    Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
    Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)

    2、 安装Redis

    安装:

    tar xzf redis-3.0.5.tar.gz /opt
    $ cd redis-3.0.5
    $ make && make install

    启动

    $ src/redis-server

    用logstash,elasticSearch,kibana实现数据收集和统计分析工作

    出现以上提示,redis启动成功

    客户端测试

    $ src/redis-cli
    redis> set foo bar
    OK
    redis> get foo
    "bar"

    由于安装完成后,redis只能窗口化运行,当关闭server的那个shell窗口以后,服务就终端了,所以需要修改相关配置

    Vi redis.conf

    修改:

    daemonize yes 

    appendonly yes

    这样redis可以支持后台运行

    其他:
    同样,我们可以把Redis作为Linux服务开机启动
    这里只提供一种最简单的方式,最好的是通过编写开机启动脚本来做。
    如果要开机启动redis,我们需要把redis设置为daemon后台启动(如果不设置为后台启动,则linux启动后图形界面会卡在一个空白的页面),而redis只有1个启动参数,就是redis的配置文件路径。redis的默认配置文件redis.conf位于redis的安装目录下。我们可以把该文件copy到/etc目录下
    Shell代码 
    1[root@localhost redis-2.6.14]# cp redis.conf /etc/ 
    redis的默认配置文件中daemonize参数的值为no,代表为非后台启动,所以我们需要把该参数的值修改为yes。至于其它的参数在这里就不详细说了,具体可以参见:http://blog.csdn.net/htofly/article/details/7686436
    修改完daemonize参数之后,redis就能够通过daemon方式启动了,那么下一步就是把redis加入到linux开机启动服务配置中了,具体步骤如下:
    使用VI编辑器打开Linux开机启动服务配置文件/etc/rc.local,并在其中加入下面的一行代码:
    Shell代码 
    2/usr/local/redis-2.6.14/src/redis-server /etc/redis.conf 
    编辑完后保存,然后重启系统就OK了。
    停止Redis服务:
    Shell代码 
    src/redis-cli shutdown

    3、安装elasticsearch

    tar zxvf elasticsearch-2.1.0.tar.gz

    进入elasticsearch-2.1.0文件夹,需要注意的是,elasticsearch不允许用root账户进行启动、

    ./bin/elasticsearch

    elasticSearch建议用一个专用的用户进行操作,如果用root用户启动的话,会报错,

    会报如下错误:

     Don’t run Elasticsearch as root

    在以下网址文档中有详细的说明

    (https://www.elastic.co/blog/scripting-security)

    curl -X GET http://localhost:9200/
    打印出以下信息:
    {
      "name" : "Witchfire",
      "cluster_name" : "elasticsearch",
      "version" : {
        "number" : "2.1.0",
        "build_hash" : "72cd1f1a3eee09505e036106146dc1949dc5dc87",
        "build_timestamp" : "2015-11-18T22:40:03Z",
        "build_snapshot" : false,
        "lucene_version" : "5.3.1"
      },
      "tagline" : "You Know, for Search"
    }

    ElasticSearch安装运行成功

    4、 安装Logstash

    cd /opt/tools
    unzip logstash-2.1.0.zip
    mv logstash-2.1.0 /opt

    建立服务器启动的配置文件

    cd logstash-2.10.0/
    mkdir conf log
    cd conf
    vi server.conf
     
    input { stdin { }
             redis{
                  type => "redis-input"
                  data_type => "list"
                  key => "key_count"
             }
     }
    output {
      elasticsearch { hosts => ["localhost:9200"] }
      stdout { codec => rubydebug }
    }

    //reids地址是127.0.0.1.默认端口是6379 由于我都安装在了本机,所以这个就没有进行再配置,相关配置可以参考以下官网网址:

    https://www.elastic.co/guide/en/logstash/current/plugins-inputs-redis.html

    启动服务端

    #bin/logstash -f  conf/server.conf --log logs/stdout &   # "&"为在后台执行
    #bin/logstash -f  conf/client.conf --log logs/stdout &   # "&"为在后台执行

    5、安装kibana

    cd /opt/tools
    tar -zxvf kibana-4.1.3-linux-x64.tar.gz -C /opt
    cd /opt

    可以在kibana/conf/文件夹中,修改kibana.yml配置文件,修改 elasticsearch的访问路径为相关的访问路径,默认为:

    elasticsearch_url: http://localhost:9200

    由于我的elasticearc安装在了本机,这个地址和端口就暂时不做修改了

    默认会有.kibana索引,如果没有的话再进行建立

    执行命令

    curl -XPUT localhost:9200/.kibana

    用logstash,elasticSearch,kibana实现数据收集和统计分析工作

    刚开始下载的是kibana 的版本是4.1.3,然后启动的时候报错,

    {"name":"Kibana","hostname":"test-dev1","pid":15605,"level":30,"msg":"Found kibana index","time":"2015-11-26T07:49:48.672Z","v":0}
    {"name":"Kibana","hostname":"test-dev1","pid":15605,"level":50,"err":{"message":{"root_cause":[{"type":"search_parse_exception","reason":"No mapping found for [buildNum] in order to sort on"}],"type":"search_phase_execution_exception","reason":"all shards failed","phase":"query","grouped":true,"failed_shards":[{"shard":0,"index":".kibana","node":"uj6DUqLOSZOWghUpRlegmw","reason":{"type":"search_parse_exception","reason":"No mapping found for [buildNum] in order to sort on"}}]},"name":"Error","stack":"Error: [object Object]
        at respond (/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/src/lib/transport.js:235:15)
        at checkRespForFailure (/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/src/lib/transport.js:203:7)
        at HttpConnector.<anonymous> (/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/src/lib/connectors/http.js:156:7)
        at IncomingMessage.bound (/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/node_modules/lodash-node/modern/internals/baseBind.js:56:17)
        at IncomingMessage.emit (events.js:117:20)
        at _stream_readable.js:944:16
        at process._tickCallback (node.js:442:13)"},"msg":"","time":"2015-11-26T07:49:48.683Z","v":0}
    {"name":"Kibana","hostname":"test-dev1","pid":15605,"level":60,"err":{"message":{"root_cause":[{"type":"search_parse_exception","reason":"No mapping found for [buildNum] in order to sort on"}],"type":"search_phase_execution_exception","reason":"all shards failed","phase":"query","grouped":true,"failed_shards":[{"shard":0,"index":".kibana","node":"uj6DUqLOSZOWghUpRlegmw","reason":{"type":"search_parse_exception","reason":"No mapping found for [buildNum] in order to sort on"}}]},"name":"Error","stack":"Error: [object Object]
        at respond (/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/src/lib/transport.js:235:15)
        at checkRespForFailure (/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/src/lib/transport.js:203:7)
        at HttpConnector.<anonymous> (/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/src/lib/connectors/http.js:156:7)
        at IncomingMessage.bound (/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/node_modules/lodash-node/modern/internals/baseBind.js:56:17)
        at IncomingMessage.emit (events.js:117:20)
        at _stream_readable.js:944:16
        at process._tickCallback (node.js:442:13)"},"msg":"","time":"2015-11-26T07:49:48.683Z","v":0}

    经过搜索得知,原来是版本问题,重新下载了4.3版本。重新启动,正常

    启动kibana,默认端口为5601

    用logstash,elasticSearch,kibana实现数据收集和统计分析工作

    默认是没有任何日志的,当我们访问nginx的时候,会产生一些访问日志,回头再看kibana,日志将会实时的显示到kibana中,深入的去学习kibana的使用,将会做出来我们想要的数据。

    用logstash,elasticSearch,kibana实现数据收集和统计分析工作

    用logstash,elasticSearch,kibana实现数据收集和统计分析工作

    来自:http://my.oschina.net/u/2457218/blog/536893

  • 相关阅读:
    第 28 章 CSS3 多列布局
    实例解读什么是Redis缓存穿透、缓存雪崩和缓存击穿
    深入浅出一致性Hash原理
    要想深入理解mysql索引?这16个点你必须要了解!
    为什么不要尝试用int来存手机号?
    mysql-覆盖索引
    聚集索引,非聚集索引,覆盖索引 原理
    mysql use index、ignore index、force index用法
    HashMap在JDK1.8版本尾插法实现解析
    redis slot 槽点
  • 原文地址:https://www.cnblogs.com/beautiful-code/p/6264468.html
Copyright © 2020-2023  润新知