数据平台实践②——Logstash+Elasticsearch+Kibana

简介


在上一次的数据平台实践①中,对基于Flume,Kafka和Spark Streaming的数据平台组合做了介绍,这一次对业界流行的ELK组合进行学习与实践。
关于ELK,网上已有大量相关介绍,深入了解的话,可以去官网学习。这里只做基本介绍。

Logstash——数据采集

Logstash在ELK组合中起着数据采集的作用。它负责读取数据,并传递数据。类似于Flume,但功能比Flume相对较多,它包括正则解析,数据处理等等,通过简单配置,可以在采集数据的同时,对数据做简单处理。

Elasticsearch——数据存储与搜索

Elasticsearch,顾名思义,即为弹性搜索。当然搜索的前提是要有数据的存储,故其主要功能是为数据提供存储,然后建立索引,再提供快速搜索。

Kibana——展示

对于海量数据,无论是数量,还是维度,都处在一个较高的层次上。然而,数据分析平台在经过一段时间的发展之后,都会形成了一定的固有模式,从而,数据得以通过多种方式进行呈现,比如折线图,条形图,饼图等等。Kibana就是这样一种数据管理界面

实践


ELK的搭建比较简单,搞清楚运行机制,按顺序配置启动一下即可。
【版本均为5.1.1】

log-redis.conf(从日志到redis)

input {
    file {
        path => [ "/home/wwwlogs/access.log" ]
        start_position => "end"
    }
}

filter {
    mutate { 
        replace => { "type" => "nginx_access" } 
    }
    grok {
        match => { "message" => "%{IPORHOST:http_host} - (%{USERNAME:remote_user}|-) \[%{HTTPDATE:time_local}\] \"%{WORD:method} %{NOTSPACE:request} HTTP/%{NUMBER:http_version}\" %{INT:status} %{INT:body_bytes_sent} %{QS:http_referer} %{QS:http_user_agent}" }
    }
    date {
        match => [ "time_local" , "dd/MMM/YYYY:HH:mm:ss Z" ]
    }
    geoip {
        source => "http_host"
    }
}


output {
    redis { host => "127.0.0.1" data_type => "list" key => "nginx-access-log" }
}

该文件的作用是指出输入方nginx的access日志,如何使用过滤插件及输出对象,非常简单直观。
以上配置均可在官网中查到使用细则。值得一提的是grok这个工具,它属于filter下的一个插件,提供正则匹配功能。这里提供一个grok debug网站,它可以实时对你写的正则表达式进行验证,甚至根据你提供的字符串给出相应的grok正则式,相当赞!

redis-elastic.conf(从redis到elastic)


input {
    redis {
        host => "127.0.0.1"
        port => "6379"
        key => "nginx-access-log"
        data_type => "list"
        type => "redis-nginx-access-log"
    }
}

output {
    elasticsearch {
        hosts => [ "localhost:9200" ]
        index => "e-nginx-access-log-%{+YYYY.MM.dd}"
    }
}

该文件的作用是将数据从redis输出到Elasticsearch。

#依照log-redis.conf开启logstash
/usr/local/mybin/logstash-5.1.1/bin/logstash -f /usr/local/mybin/logstash-5.1.1/config/log-redis.conf --config.reload.automatic

#开启elasticsearch
/usr/local/mybin/elasticsearch-5.1.1/bin/elasticsearch

#依照redis-elastic.conf开启logstash
/usr/local/mybin/logstash-5.1.1/bin/logstash -f /usr/local/mybin/logstash-5.1.1/config/redis-elastic.conf --config.reload.automatic 

#开启kibana(按以上过程开启进程,监听的端口都是默认,所以要注意是否启动正确)
/usr/local/mybin/kibana-5.1.1-linux-x86_64/bin/kibana

现在通过浏览器打开IP:5061,就可以看到以下界面。

数据平台实践②——Logstash+Elasticsearch+Kibana_第1张图片
Kibana

有些人想外网也能看到(不安全),当然也可以,不过需要修改conf下的kibana.yml。
另外,如果需要密码登录,可以给Kibana安装插件x-pack。安装之后,默认用户名和密码分别是elastic和changeme。

数据平台实践②——Logstash+Elasticsearch+Kibana_第2张图片
Kibana

小结


ELK适合日志数据分析等类似平台的快速搭建。当业务相对平稳,需求相对明确时,可以采用这个组合进行快速开发。

你可能感兴趣的:(数据平台实践②——Logstash+Elasticsearch+Kibana)