您好,登錄后才能下訂單哦!
近幾年,互聯網生成數據的速度不斷遞增,為了便于用戶能夠更快更精準的找到想要的內容,站內搜索或應用內搜索成了不可缺少了的功能之一。同時,企業積累的數據也再不斷遞增,對海量數據分析處理、可視化的需求也越來越高。
在這個領域里,開源項目ElasticSearch贏得了市場的關注,比如,去年Elastic公司與阿里云達成合作伙伴關系提供阿里云 Elasticsearch 的云服務、今年10月Elastic公司上市,今年11月舉行了Elastic 中國開發者大會、目前各大云廠商幾乎都提供基于Elasticsearch的云搜索服務,等等這些事件,都反映了Elasticsearch在企業的應用越來越普遍和重要。
先來看看官網的介紹,ok,核心關鍵字:搜索、分析。
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 風格的搜索和數據分析引擎,能夠解決不斷涌現出的各種用例。作為 Elastic
Stack 的核心,它集中存儲您的數據,幫助您發現意料之中以及意料之外的情況。
產品優勢:速度快、可擴展性、彈性、靈活性。
在某些應用場景中,不僅會使用Elasticsearch,還會使用Elastic旗下的其他產品,比如Kibana、Logstash等,常見的ELK指的就是Elasticsearch、Logstash、Kibana這三款產品,Elastic Stack指的是Elastic旗下的所有開源產品。
應用場景:(圖片截于Elastic官網)
接下來,我們來實戰一個應用場景。
場景:一個后端應用部署在一臺云服務器中,后端應用會以文件形式記錄日志。需求為:收集日志內容,對每行日志解析,得到結構化數據,便于搜索、處理與可視化。
方案:使用Filebeat轉發日志到Logstash,后者解析或轉換數據,然后轉發到Elasticsearch儲存,接著數據就任君處理了,這里我們把日志數據根據某些需求進行可視化,可視化的活就交給Kibana完成。(另種方案也可:通過Filebeat將日志數據直接轉發到Elasticsearch,由Elasticsearch Ingest node負責數據的數據處理)
本案例使用的產品版本如下:
系統:CentOS,這里分開部署了,也可以放在一起。
1、Kibana_v6.2.3 (IP: 192.168.0.26)
2、Elasticsearch_v6.2.3 (IP: 192.168.0.26)
3、Filebeat_v6.2.3 (IP: 192.168.0.25)
4、Logstash_v6.2.3 (IP: 192.168.0.25)
假設一行日志內容如下:(日志文件放在/root/logs目錄下)
其中一行日志內容如下:
2018-11-08 20:46:25,949|https-jsse-nio-10.44.97.19-8979-exec-11|INFO|CompatibleClusterServiceImpl.getClusterResizeStatus.resizeStatus=|com.huawei.hwclouds.rds.trove.api.service.impl.CompatibleClusterServiceImpl.getResizeStatus(CompatibleClusterServiceImpl.java:775)
一行日志中可得到5個字段,以“|”分割
2018-11-08 20:46:25,949| #時間
https-jsse-nio-10.44.97.19-8979-exec-11| # 線程名稱
INFO| # 日志級別
CompatibleClusterServiceImpl.getClusterResizeStatus.resizeStatus=| # 日志內容
trove.api.service.impl.CompatibleClusterServiceImpl.getResizeStatus(CompatibleClusterServiceImpl.java:775) # 類名
文件目錄如下:(Elasticsearch和Kibana在另一臺服務器,且已啟動)
logs目錄存放需要收集的應用日志,logstash.conf 為Logstash準備的配置文件。
logstash.conf內容如下:
input {
beats {
port => 5044
}
}
filter {
grok {
match => { "message" => "%{GREEDYDATA:Timestamp}\|%{GREEDYDATA:ThreadName}\|%{WORD:LogLevel}\|%{GREEDYDATA:TextInformation}\|%{GREEDYDATA:ClassName}" }
}
date {
match => [ "Timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ]
}
}
output {
elasticsearch {
hosts => "192.168.0.26:9200"
manage_template => false
index => "java_log"
}
}
接下來啟動Logstash(啟動成功,監聽5044端口,等待日志數據傳入):
接下來看下Filebeat的配置文件:
filebeat.prospectors:
- type: log
enabled: true
# 配置日志目錄的路徑或者日志文件的路徑
paths:
- /root/logs/*.log
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
setup.template.settings:
index.number_of_shards: 3
#index.codec: best_compression
#_source.enabled: false
setup.kibana:
host: "192.168.0.26:5601"
# 配置output為logstash
output.logstash:
# The Logstash hosts
hosts: ["localhost:5044"]
啟動Filebeat:(當日志文件有更新時,會被Filebeat監聽到,被轉發出去。)
最后來看看Kibana,進行日志的可視化。在Kibana創建好index pattern,這里命名為:java_log。在Discover頁面中對日志數據進行查詢。
在Visualize中創建可視化圖形。
在Dashboard中組合我們的圖形。
到此,就完成一個簡單的日志數據的收集、分析、可視化。
Elastic Stack還有很多強大的功能,后面我們來一個應用內搜索案例。
https://www.elastic.co/cn/blog/alibaba-cloud-to-offer-elasticsearch-kibana-and-x-pack-in-china 阿里云與Elastic公司合作
https://www.elastic.co/guide/en/beats/libbeat/6.2/getting-started.html beat入門
公眾號:碼農阿呆 (歡迎關注和交流)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。