美文网首页
ELK搭建实时日志分析系统

ELK搭建实时日志分析系统

作者: 随机字符串 | 来源:发表于2017-11-22 12:29 被阅读0次

    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,如下图:

    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,如下图:

    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项目,结构如下:

    b)编辑Log4jDemo.java文件

    c)修改log4j.properties配置文件

    4)启动Logstash服务

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

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

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

    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搭建实时日志分析系统

          本文链接:https://www.haomeiwen.com/subject/iqpnvxtx.html