一.Elk簡介
什么是ELK?
https://www.elastic.co/cn/what-is/elk-stack
通俗來講,ELK 是由Elasticsearch、Logstash、Kibana 三個開源軟件的組成的一個組合體,ELK 是elastic 公司研發的一套完整的日志收集、分析和展示的企業級解決方案,在這三個軟件當中,每個軟件用於完成不同的功能,ELK 又稱為ELK stack,官方域名為elastic.co,ELK stack 的主要優點有如下幾個:
處理方式靈活: elasticsearch 是近實時全文索引,具有強大的搜索功能
配置相對簡單:elasticsearch 的API 全部使用JSON 接口,logstash 使用模塊配置,kibana 的配置文件部分更簡單。
檢索性能高效:基於優秀的設計,雖然每次查詢都是實時,但是也可以達到百億級數據的查詢秒級響應。
集群線性擴展:elasticsearch 和logstash 都可以靈活線性擴展
前端操作絢麗:kibana 的前端設計比較絢麗,而且操作簡單
什么是Elasticsearch:
是一個高度可擴展的開源全文搜索和分析引擎,它可實現數據的實時全文搜索搜索、支持分布式可實現高可用、提供API 接口,可以處理大規模日志數據,比如Nginx、Tomcat、系統日志等功能。
Elasticsearch 使用Java 語言開發,是建立在全文搜索引擎Apache Lucene 基礎之上的搜索引擎,https://lucene.apache.org/。
Elasticsearch 的特點:
實時搜索、實時分析
分布式架構、實時文件存儲
文檔導向,所有對象都是文檔
高可用,易擴展,支持集群,分片與復制
接口友好,支持json
elasticsearch如何實現數據的高可用:
- 分片:把數據拆分為幾份,並寫入到指定分片里面,如:0 1,多個分片一定程度可以提升讀寫性能
- 副本:對分片進行跨主機的數據備份,當主分片的服務器宕機之后,副本分片會接管主分片的角色並繼續對外提供讀寫服務。

什么是Logstash
Logstash 是一個具有實時傳輸能力的數據收集引擎,其可以通過插件實現日志收集和轉發,支持日志過濾,支持普通log、自定義json 格式的日志解析,最終把經過處理的日志發送給elasticsearch。

什么是kibana:
Kibana 為elasticsearch 提供一個查看數據的web 界面, 其主要是通過elasticsearch 的API 接口進行數據查找,並進行前端數據可視化的展現,另外還可以針對特定格式的數據生成相應的表格、柱狀圖、餅圖等。

為什么使用ELK?
ELK 組件在海量日志系統的運維中,可用於解決以下主要問題:
- 分布式日志數據統一收集,實現集中式查詢和管理
- 故障排查
- 安全信息和事件管理
- 報表功能
ELK 的好處:
ELK 組件在大數據運維系統中,主要可解決的問題如下:
- 日志查詢,問題排查,故障恢復,故障自愈
- 應用日志分析,錯誤報警
- 性能分析,用戶行為分析
誰在使用ELK:
使用場景:

二. elasticsearch如何實現數據的高可用:
- 分片:把數據拆分為幾份,並寫入到指定分片里面,如:0 1,多個分片一定程度可以提升讀寫性能
- 副本:對分片進行跨主機的數據備份,當主分片的服務器宕機之后,副本分片會接管主分片的角色並繼續對外提供讀寫服務。