簡(jiǎn)介
在上一次的數(shù)據(jù)平臺(tái)實(shí)踐①中术陶,對(duì)基于Flume磕瓷,Kafka和Spark Streaming的數(shù)據(jù)平臺(tái)組合做了介紹膘螟,這一次對(duì)業(yè)界流行的ELK組合進(jìn)行學(xué)習(xí)與實(shí)踐笙僚。
關(guān)于ELK芳肌,網(wǎng)上已有大量相關(guān)介紹,深入了解的話肋层,可以去官網(wǎng)學(xué)習(xí)亿笤。這里只做基本介紹。
Logstash——數(shù)據(jù)采集
Logstash在ELK組合中起著數(shù)據(jù)采集的作用栋猖。它負(fù)責(zé)讀取數(shù)據(jù)净薛,并傳遞數(shù)據(jù)。類(lèi)似于Flume蒲拉,但功能比Flume相對(duì)較多肃拜,它包括正則解析,數(shù)據(jù)處理等等雌团,通過(guò)簡(jiǎn)單配置燃领,可以在采集數(shù)據(jù)的同時(shí),對(duì)數(shù)據(jù)做簡(jiǎn)單處理锦援。
Elasticsearch——數(shù)據(jù)存儲(chǔ)與搜索
Elasticsearch猛蔽,顧名思義,即為彈性搜索雨涛。當(dāng)然搜索的前提是要有數(shù)據(jù)的存儲(chǔ)枢舶,故其主要功能是為數(shù)據(jù)提供存儲(chǔ),然后建立索引替久,再提供快速搜索凉泄。
Kibana——展示
對(duì)于海量數(shù)據(jù),無(wú)論是數(shù)量蚯根,還是維度后众,都處在一個(gè)較高的層次上胀糜。然而,數(shù)據(jù)分析平臺(tái)在經(jīng)過(guò)一段時(shí)間的發(fā)展之后蒂誉,都會(huì)形成了一定的固有模式教藻,從而,數(shù)據(jù)得以通過(guò)多種方式進(jìn)行呈現(xiàn)右锨,比如折線圖括堤,條形圖,餅圖等等绍移。Kibana就是這樣一種數(shù)據(jù)管理界面
實(shí)踐
ELK的搭建比較簡(jiǎn)單悄窃,搞清楚運(yùn)行機(jī)制,按順序配置啟動(dòng)一下即可蹂窖。
【版本均為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日志轧抗,如何使用過(guò)濾插件及輸出對(duì)象,非常簡(jiǎn)單直觀瞬测。
以上配置均可在官網(wǎng)中查到使用細(xì)則横媚。值得一提的是grok這個(gè)工具,它屬于filter下的一個(gè)插件月趟,提供正則匹配功能灯蝴。這里提供一個(gè)grok debug網(wǎng)站,它可以實(shí)時(shí)對(duì)你寫(xiě)的正則表達(dá)式進(jìn)行驗(yàn)證狮斗,甚至根據(jù)你提供的字符串給出相應(yīng)的grok正則式绽乔,相當(dāng)贊!
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}"
}
}
該文件的作用是將數(shù)據(jù)從redis輸出到Elasticsearch碳褒。
#依照l(shuí)og-redis.conf開(kāi)啟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
#開(kāi)啟elasticsearch
/usr/local/mybin/elasticsearch-5.1.1/bin/elasticsearch
#依照redis-elastic.conf開(kāi)啟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
#開(kāi)啟kibana(按以上過(guò)程開(kāi)啟進(jìn)程折砸,監(jiān)聽(tīng)的端口都是默認(rèn),所以要注意是否啟動(dòng)正確)
/usr/local/mybin/kibana-5.1.1-linux-x86_64/bin/kibana
現(xiàn)在通過(guò)瀏覽器打開(kāi)IP:5061沙峻,就可以看到以下界面睦授。
有些人想外網(wǎng)也能看到(不安全),當(dāng)然也可以摔寨,不過(guò)需要修改conf下的kibana.yml去枷。
另外,如果需要密碼登錄是复,可以給Kibana安裝插件x-pack删顶。安裝之后,默認(rèn)用戶(hù)名和密碼分別是elastic和changeme淑廊。
小結(jié)
ELK適合日志數(shù)據(jù)分析等類(lèi)似平臺(tái)的快速搭建逗余。當(dāng)業(yè)務(wù)相對(duì)平穩(wěn),需求相對(duì)明確時(shí)季惩,可以采用這個(gè)組合進(jìn)行快速開(kāi)發(fā)录粱。