本文可能不會(huì)詳細(xì)記錄每一步實(shí)現(xiàn)的過(guò)程,但一定程度上可以引領(lǐng)小伙伴走向更開闊的視野,串聯(lián)每個(gè)環(huán)節(jié),呈現(xiàn)予你不一樣的效果。
業(yè)務(wù)規(guī)模
8個(gè)平臺(tái)
100+臺(tái)服務(wù)器
10+個(gè)集群分組
微服務(wù)600+
用戶N+
隨著分布式微服務(wù)容器技術(shù)的發(fā)展,傳統(tǒng)監(jiān)控系統(tǒng)面臨許多問題:
容器如何監(jiān)控
微服務(wù)如何監(jiān)控
集群性能如何進(jìn)行分析計(jì)算
如何管理agent端大量配置腳本
這些都是傳統(tǒng)監(jiān)控所要面臨的棘手問題,那么如何解決當(dāng)前遇到的問題,GPE橫空出世,后面會(huì)重點(diǎn)分析。
目標(biāo)群體:系統(tǒng)日志、服務(wù)器、容器、系統(tǒng)軟件運(yùn)行指標(biāo)
日志架構(gòu):ELK (Elasticsearch+Logstash+Kibana+Redis)
監(jiān)控架構(gòu):GPE (Grafana+Prometheus+Exporter+Consul)
報(bào)警方式:郵件、短信、釘釘以及自定義webhook,監(jiān)控中心7x24小時(shí)
隨著分布式微服務(wù)的盛行,功能模塊的拆分細(xì)化,無(wú)論對(duì)于開發(fā)還是運(yùn)維,日志的重要性都是不言而喻的,但是如何存儲(chǔ)分析定位查看日志,一百個(gè)公司可能會(huì)有兩百種做法。有的很少記錄日志,有的日志等級(jí)都不分,有的寫入文本然后就不管不問了,有的向MySql數(shù)據(jù)庫(kù)一扔也沒有了下文,等到用戶投訴或者被發(fā)現(xiàn)問題,才會(huì)翻一翻。
那么如何正確優(yōu)雅的記錄日志呢?相信大家對(duì)于ELK并不陌生,可能不少小伙伴都接觸過(guò),對(duì)于中小型互聯(lián)網(wǎng)創(chuàng)業(yè)公司來(lái)說(shuō),使用ELK搭建日志分析系統(tǒng)的確是一個(gè)不錯(cuò)的選擇。
架構(gòu)圖
核心組件
ELK由Elasticsearch、Logstash和Kibana三劍客組成,當(dāng)然了以上是最基本的組件,為了使的架構(gòu)流程更加豐滿,我們加入了Redis做緩沖隊(duì)列,配置了sendmail做異常日志告警。
ElasticSearch
ElasticSearch是一個(gè)基于Lucene的搜索服務(wù)器。它提供了一個(gè)分布式多用戶能力的全文搜索引擎,基于RESTful web接口。它的特點(diǎn)有:分布式,零配置,自動(dòng)發(fā)現(xiàn),索引自動(dòng)分片,索引副本機(jī)制,restful風(fēng)格接口等。
Logstash
Logstash數(shù)據(jù)分析工具,它可以對(duì)系統(tǒng)生成的的日志進(jìn)行采集、分析,存儲(chǔ)。2013 年,Logstash 被 Elasticsearch 公司收購(gòu),ELK Stack 正式成為官方用語(yǔ)。
kibana
Kibana是一個(gè)開源的分析與可視化平臺(tái),用來(lái)搜索、查看存儲(chǔ)在Elasticsearch索引中的數(shù)據(jù)。
工作流程
logstash(shipper) 實(shí)時(shí)監(jiān)控并過(guò)濾收集每個(gè)服務(wù)的日志信息
logstash(shipper) 把收集來(lái)的日志(INFO 、DEBUG 、RROR 、WARN等)分別發(fā)送到Redis
logstash(indexer) 按照日志分類分別從Redis讀取日志信息并發(fā)送給ElasticSearch
logstash(indexer) 過(guò)濾出RROR日志通過(guò)郵件或者其它webhook方式告警開發(fā)運(yùn)維人員
Kibana讀取ElasticSearch數(shù)據(jù)結(jié)合自定義搜索進(jìn)行頁(yè)面展示
ELK主要收集分析預(yù)警的是我們平臺(tái)系統(tǒng)中各個(gè)服務(wù)的業(yè)務(wù)日志,一般通過(guò)日志組件(log4j 、log4j2 、logback)來(lái)收集并寫入文本。但是對(duì)于系統(tǒng)本身以及一些應(yīng)用軟件的監(jiān)控預(yù)警,這套方案顯然是不合適的,這里推薦一下GPE三劍客,當(dāng)然了GPE是我自己意淫出來(lái)的組合。
架構(gòu)圖
核心組件
Grafana、Prometheus、Exporter(一系列插件),自定義的三劍客,當(dāng)然了為了使得整合監(jiān)控程序更加流暢完整,我們加入了注冊(cè)中心Consul做服務(wù)發(fā)現(xiàn),實(shí)現(xiàn)動(dòng)態(tài)添加服務(wù),使用郵件、釘釘以及webhook實(shí)現(xiàn)異常告警。
GPE組件只是其中的一種實(shí)現(xiàn)方式罷了,Grafana配合InfluxData提供Telegraf也可以收集很多Metrics,實(shí)現(xiàn)更為豐富的大屏監(jiān)控預(yù)警。
Grafana
Grafana 是一個(gè)開箱即用的可視化工具,具有功能齊全的度量?jī)x表盤和圖形編輯器,有靈活豐富的圖形化選項(xiàng),可以混合多種風(fēng)格,支持多個(gè)數(shù)據(jù)源特點(diǎn)。
Prometheus
Prometheus是一個(gè)開源的服務(wù)監(jiān)控系統(tǒng),它通過(guò)HTTP協(xié)議從遠(yuǎn)程的機(jī)器收集數(shù)據(jù)并存儲(chǔ)在本地的時(shí)序數(shù)據(jù)庫(kù)上。
多維數(shù)據(jù)模型(時(shí)序列數(shù)據(jù)由metric名和一組key/value組成)
在多維度上靈活的查詢語(yǔ)言(PromQl)
不依賴分布式存儲(chǔ),單主節(jié)點(diǎn)工作.
通過(guò)基于HTTP的pull方式采集時(shí)序數(shù)據(jù)
可以通過(guò)push gateway進(jìn)行時(shí)序列數(shù)據(jù)推送(pushing)
可以通過(guò)服務(wù)發(fā)現(xiàn)或者靜態(tài)配置去獲取要采集的目標(biāo)服務(wù)器
多種可視化圖表及儀表盤支持
如架構(gòu)圖所示,Prometheus通過(guò)安裝在遠(yuǎn)程機(jī)器上的exporter來(lái)收集監(jiān)控?cái)?shù)據(jù)。
Consul
Consul有多個(gè)組件,但是整體來(lái)看,它是你基礎(chǔ)設(shè)施中用于發(fā)現(xiàn)和配置服務(wù)的一個(gè)工具。它提供如下幾個(gè)關(guān)鍵功能:
服務(wù)發(fā)現(xiàn): Consul的某些客戶端可以提供一個(gè)服務(wù),例如api或者mysql,其它客戶端可以使用Consul去發(fā)現(xiàn)這個(gè)服務(wù)的提供者。使用DNS或者HTTP,應(yīng)用可以很容易的找到他們所依賴的服務(wù)。
健康檢查: Consul客戶端可以提供一些健康檢查,這些健康檢查可以關(guān)聯(lián)到一個(gè)指定的服務(wù)(服務(wù)是否返回200 OK),也可以關(guān)聯(lián)到本地節(jié)點(diǎn)(內(nèi)存使用率是否在90%以下)。這些信息可以被一個(gè)操作員用來(lái)監(jiān)控集群的健康狀態(tài),被服務(wù)發(fā)現(xiàn)組件路由時(shí)用來(lái)遠(yuǎn)離不健康的主機(jī)。
鍵值存儲(chǔ): 應(yīng)用可以使用Consul提供的分層鍵值存儲(chǔ)用于一些目的,包括動(dòng)態(tài)配置、特征標(biāo)記、協(xié)作、leader選舉等等。通過(guò)一個(gè)簡(jiǎn)單的HTTP API可以很容易的使用這個(gè)組件。
多數(shù)據(jù)中心: Consul對(duì)多數(shù)據(jù)中心有非常好的支持,這意味著Consul用戶不必?fù)?dān)心由于創(chuàng)建更多抽象層而產(chǎn)生的多個(gè)區(qū)域。
Consul被設(shè)計(jì)為對(duì)DevOps群體和應(yīng)用開發(fā)者友好,他非常適合現(xiàn)代的、可伸縮的基礎(chǔ)設(shè)施。
工作流程
Exporter組件注冊(cè)到Consul注冊(cè)中心
Prometheus拉取Consul注冊(cè)中心的servers
Exporter組件獲取服務(wù)器或者系統(tǒng)軟件的metrics
Grafana配置Prometheus數(shù)據(jù)源獲取其采集數(shù)據(jù)結(jié)合自定義面板實(shí)現(xiàn)監(jiān)控大屏
Grafana通過(guò)設(shè)置Alerting實(shí)現(xiàn)監(jiān)控預(yù)警
如文章開頭所述,本文并沒有一步步詳細(xì)記錄安裝使用教程,這些教程網(wǎng)上都有,即使有坑,相信作為程序員的你也能夠解決。不才,在這里只是拋磚引玉,希望各位小伙伴可以學(xué)到更多知識(shí)。
還記得許多年前的春天,那時(shí)網(wǎng)站還都是靜態(tài)頁(yè)面,沒有圖片也沒有絢麗的效果,沒有24小時(shí)服務(wù)的客服,可當(dāng)初程序員是那么快樂,雖然只有網(wǎng)頁(yè)三劍客,在網(wǎng)上、在指尖、在BBS中,揮灑著自己的青春熱血,如果有一天 我老無(wú)所依,請(qǐng)把我留在 在那互聯(lián)網(wǎng)浪潮里。
現(xiàn)如今,隨著云計(jì)算、分布式、微服務(wù)的盛行,程序員的你是否已經(jīng)疲倦與自己的CURD,是否已經(jīng)不屑于與產(chǎn)品汪扯皮,來(lái)來(lái)來(lái),返回頂部小伙伴們?cè)倏纯匆槐椋l(shuí)說(shuō)程序員全部的時(shí)間都要敲代碼,是時(shí)候需要去需找自己的另一片天空了。
作者: 小柒 出處: https://blog.52itstyle.com
1、ES簡(jiǎn)介
ES=elaticsearch簡(jiǎn)寫, Elasticsearch是一個(gè)開源的高擴(kuò)展的分布式全文檢索引擎,它可以近乎實(shí)時(shí)的存儲(chǔ)、檢索數(shù)據(jù);本身擴(kuò)展性很好,可以擴(kuò)展到上百臺(tái)服務(wù)器,處理PB級(jí)別的數(shù)據(jù)。Elasticsearch也使用Java開發(fā)并使用Lucene作為其核心來(lái)實(shí)現(xiàn)所有索引和搜索的功能,但是它的目的是通過(guò)簡(jiǎn)單的RESTful API來(lái)隱藏Lucene的復(fù)雜性,從而讓全文搜索變得簡(jiǎn)單。
2、Lucene與ES關(guān)系
1.Lucene只是一個(gè)庫(kù)。想要使用它,你必須使用Java來(lái)作為開發(fā)語(yǔ)言并將其直接集成到你的應(yīng)用中,更糟糕的是,Lucene非常復(fù)雜,你需要深入了解檢索的相關(guān)知識(shí)來(lái)理解它是如何工作的。
2.Elasticsearch也使用Java開發(fā)并使用Lucene作為其核心來(lái)實(shí)現(xiàn)所有索引和搜索的功能,但是它的目的是通過(guò)簡(jiǎn)單的RESTful API來(lái)隱藏Lucene的復(fù)雜性,從而讓全文搜索變得簡(jiǎn)單。
3、當(dāng)前環(huán)境的困難
1.開發(fā)人員不能登錄線上服務(wù)器查看詳細(xì)日志。
2.各個(gè)系統(tǒng)都有日志,日志數(shù)據(jù)分散難以查找。
3.日志數(shù)據(jù)量大。查詢速度慢,或者數(shù)據(jù)不夠?qū)崟r(shí)。
4、ES主要解決問題
1.檢索相關(guān)數(shù)據(jù);2.返回統(tǒng)計(jì)結(jié)果;3.速度要快。
5、ES工作原理
當(dāng)ElasticSearch的節(jié)點(diǎn)啟動(dòng)后,它會(huì)利用多播(multicast)(或者單播,如果用戶更改了配置)尋找集群中的其它節(jié)點(diǎn),并與之建立連接。這個(gè)過(guò)程如下圖所示:
6、ES核心概念
1.Cluster:集群。
ES可以作為一個(gè)獨(dú)立的單個(gè)搜索服務(wù)器。不過(guò),為了處理大型數(shù)據(jù)集,實(shí)現(xiàn)容錯(cuò)和高可用性,ES可以運(yùn)行在許多互相合作的服務(wù)器上。這些服務(wù)器的集合稱為集群。
2.Node:節(jié)點(diǎn)。
形成集群的每個(gè)服務(wù)器稱為節(jié)點(diǎn),所有節(jié)點(diǎn)都是對(duì)等的,數(shù)據(jù)存在每個(gè)節(jié)點(diǎn)中,防止數(shù)據(jù)丟失。
3.Shard:分片。
當(dāng)有大量的文檔時(shí),由于內(nèi)存的限制、磁盤處理能力不足、無(wú)法足夠快的響應(yīng)客戶端的請(qǐng)求等,一個(gè)節(jié)點(diǎn)可能不夠。這種情況下,數(shù)據(jù)可以分為較小的分片。每個(gè)分片放到不同的服務(wù)器上。當(dāng)你查詢的索引分布在多個(gè)分片上時(shí),ES會(huì)把查詢發(fā)送給每個(gè)相關(guān)的分片,并將結(jié)果組合在一起,而應(yīng)用程序并不知道分片的存在。即:這個(gè)過(guò)程對(duì)用戶來(lái)說(shuō)是透明的。
4.Replia:副本。
為提高查詢吞吐量或?qū)崿F(xiàn)高可用性,可以使用分片副本。副本是一個(gè)分片的精確復(fù)制,每個(gè)分片可以有零個(gè)或多個(gè)副本。ES中可以有許多相同的分片,其中之一被選擇更改索引操作,這種特殊的分片稱為主分片。當(dāng)主分片丟失時(shí),如:該分片所在的數(shù)據(jù)不可用時(shí),集群將副本提升為新的主分片。
5.全文檢索。
全文檢索就是對(duì)一篇文章進(jìn)行索引,可以根據(jù)關(guān)鍵字搜索,類似于mysql里的like語(yǔ)句。全文索引就是把內(nèi)容根據(jù)詞的意義進(jìn)行分詞,然后分別創(chuàng)建索引,例如”你們的激情是因?yàn)槭裁词虑閬?lái)的” 可能會(huì)被分詞成:“你們“,”激情“,“什么事情“,”來(lái)“ 等token,這樣當(dāng)你搜索“你們” 或者 “激情” 都會(huì)把這句搜出來(lái)。
7、ES特點(diǎn)和優(yōu)勢(shì)
1.分布式實(shí)時(shí)文件存儲(chǔ),可將每一個(gè)字段存入索引,使其可以被檢索到。
2.實(shí)時(shí)分析的分布式搜索引擎。分布式:索引分拆成多個(gè)分片,每個(gè)分片可有零個(gè)或多個(gè)副本。集群中的每個(gè)數(shù)據(jù)節(jié)點(diǎn)都可承載一個(gè)或多個(gè)分片,并且協(xié)調(diào)和處理各種操作;負(fù)載再平衡和路由在大多數(shù)情況下自動(dòng)完成。
3.可以擴(kuò)展到上百臺(tái)服務(wù)器,處理PB級(jí)別的結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù)。也可以運(yùn)行在單臺(tái)PC上(已測(cè)試)。
4.支持插件機(jī)制,分詞插件、同步插件、Hadoop插件、可視化插件等。
8、Elasticsearch單機(jī)部署
8.1配置JAVA環(huán)境,檢驗(yàn)環(huán)境:java -version
[root@elasticsearch-01 ~]# ls jdk-8u91-linux-x64.tar.gz [root@elasticsearch-01 ~]# tar xf jdk-8u91-linux-x64.tar.gz -C /usr/local/ [root@elasticsearch-01 ~]# ln -s /usr/local/jdk1.8.0_91/ /usr/local/java [root@elasticsearch-01 ~]# sed -i '$a export JAVA_HOME=/usr/local/java \nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH \nexport CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar' /etc/profile [root@elasticsearch-01 ~]# source /etc/profile [root@elasticsearch-01 ~]# java -version java version "1.8.0_91" Java(TM) SE Runtime Environment (build 1.8.0_91-b14) Java HotSpot(TM) 64-BitServer VM (build 25.91-b14, mixed mode)
8.2安裝elasticsearch
[root@elasticsearch-01 ~]# cd /usr/local/src/ [root@elasticsearch-01 src]# wget https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.3.0/elasticsearch-2.3.0.tar.gz [root@elasticsearch-01 src]# tar -zxvf elasticsearch-2.3.0.tar.gz -C /usr/local/ [root@elasticsearch-01 src]# cd /usr/local/ [root@elasticsearch-01 local]# ln -s elasticsearch-2.3.0 elasticsearch
8.3創(chuàng)建elasticsearch運(yùn)行用戶,es只能用普通用戶啟動(dòng)
[root@elasticsearch-01 local]# groupadd elasticsearch [root@elasticsearch-01 local]# useradd -g elasticsearch elasticsearch [root@elasticsearch-01 local]# chown -R elasticsearch:elasticsearch /usr/local/elasticsearch
8.4創(chuàng)建文件目錄
[root@elasticsearch-01 local]# su - elasticsearch 上一次登錄:二 11月 2615:09:49 CST 2019pts/0 上 [elasticsearch@elasticsearch-01 ~]$ mkdir-pv/usr/local/elasticsearch/data [elasticsearch@elasticsearch-01 ~]$ mkdir-pv/usr/local/elasticsearch/logs
8.5修改配置文件
[elasticsearch@elasticsearch-01 ~]$ cd/usr/local/elasticsearch/config/ [elasticsearch@elasticsearch-01 config]$ vimelasticsearch.yml 1cluster.name: ELK-elasticsearch 2node.name: node-1 3path.data: /usr/local/elasticsearch/data 4path.logs: /usr/local/elasticsearch/logs 5bootstrap.mlockall: true 6network.host: 172.17.120.11 7http.port: 9200 8node.master: true 9node.data: true
8.6查看health狀況
[root@elasticsearch-02 ~]# curl -X GET http://172.17.120.11:9200 ##獲取網(wǎng)頁(yè)內(nèi)容 { "name": "node-1", "cluster_name": "ELK-elasticsearch", "version": { "number": "2.3.0", "build_hash": "8371be8d5fe5df7fb9c0516c474d77b9feddd888", "build_timestamp": "2016-03-29T07:54:48Z", "build_snapshot": false, "lucene_version": "5.5.0" }, "tagline": "You Know, for Search" } [root@elasticsearch-02 ~]# curl -I GET http://172.17.120.11:9200 ##獲取網(wǎng)頁(yè)頭部信息,200正常 curl: (6) Could not resolve host: GET; 未知的名稱或服務(wù) HTTP/1.1 200OK Content-Type: text/plain; charset=UTF-8 Content-Length: 0
8.7安裝elasticsearch管理插件
[elasticsearch@elasticsearch-01 elasticsearch]$ /usr/local/elasticsearch/bin/plugin install mobz/elasticsearch-head
9、Elasticsearch集群搭建(三臺(tái)機(jī)器)
1.修改elasticsearch主配置文件
[elasticsearch@elasticsearch-01 config]$ vimelasticsearch.yml cluster.name: ELK-elasticsearch ##集群的名稱 node.name: node-1 ##節(jié)點(diǎn)名稱,其余兩個(gè)節(jié)點(diǎn)分別為node-2 和node-3 node.master: true ##指定該節(jié)點(diǎn)是否有資格被選舉成為master節(jié)點(diǎn),默認(rèn)是true,es是默認(rèn)集群中的第一臺(tái)機(jī)器為master,如果這臺(tái)機(jī)掛了就會(huì)重新選舉master node.data: true ##允許該節(jié)點(diǎn)存儲(chǔ)數(shù)據(jù)(默認(rèn)開啟) path.data: /usr/local/elasticsearch/data ##索引數(shù)據(jù)的存儲(chǔ)路徑 path.logs: /usr/local/elasticsearch/logs ##日志文件的存儲(chǔ)路徑 bootstrap.mlockall: true ##設(shè)置為true來(lái)鎖住內(nèi)存。因?yàn)閮?nèi)存交換到磁盤對(duì)服務(wù)器性能來(lái)說(shuō)是致命的,當(dāng)jvm開始swapping時(shí)es的效率會(huì)降低,所以要保證它不swap network.host: 0.0.0.0 ##綁定的ip地址 http.port: 9200 ##設(shè)置對(duì)外服務(wù)的http端口,默認(rèn)為9200 transport.tcp.port: 9300 ##設(shè)置節(jié)點(diǎn)間交互的tcp端口,默認(rèn)是9300 discovery.zen.ping.unicast.hosts: ["172.17.120.11:9300", "172.17.120.12:9300", "172.17.120.13:9300"] ##Elasticsearch將綁定到可用的環(huán)回地址,并將掃描端口9300到9305以嘗試連接到運(yùn)行在同一臺(tái)服務(wù)器上的其他節(jié)點(diǎn)。這提供了自動(dòng)集群體驗(yàn),而無(wú)需進(jìn)行任何配置。數(shù)組設(shè)置或逗號(hào)分隔的設(shè)置。每個(gè)值的形式應(yīng)該是host:port或host(如果沒有設(shè)置,port默認(rèn)設(shè)置會(huì)transport.profiles.default.port 回落到transport.tcp.port)。請(qǐng)注意,IPv6主機(jī)必須放在括號(hào)內(nèi)。默認(rèn)為127.0.0.1, [::1] discovery.zen.minimum_master_nodes: 2 ##如果沒有這種設(shè)置,遭受網(wǎng)絡(luò)故障的集群就有可能將集群分成兩個(gè)獨(dú)立的集群 - 分裂的大腦 - 這將導(dǎo)致數(shù)據(jù)丟失
2.修改elasticsearch從slave1配置文件
[root@elasticsearch-02 ~]# cat /usr/local/elasticsearch/config/elasticsearch.yml cluster.name: ELK-elasticsearch node.name: node-2 node.master: true node.data: true path.data: /usr/local/elasticsearch/data path.logs: /usr/local/elasticsearch/logs bootstrap.mlockall: true network.host: 0.0.0.0 http.port: 9200 transport.tcp.port: 9300 discovery.zen.ping.unicast.hosts: ["172.17.120.11:9300", "172.17.120.12:9300", "172.17.120.13:9300"] discovery.zen.minimum_master_nodes: 2
3.修改elasticsearch從slave2配置文件
[root@elasticsearch-03 ~]# cat /usr/local/elasticsearch/config/elasticsearch.yml cluster.name: ELK-elasticsearch node.name: node-3 node.master: true node.data: true path.data: /usr/local/elasticsearch/data path.logs: /usr/local/elasticsearch/logs bootstrap.mlockall: true network.host: 0.0.0.0 http.port: 9200 transport.tcp.port: 9300 discovery.zen.ping.unicast.hosts: ["172.17.120.11:9300", "172.17.120.12:9300", "172.17.120.13:9300"] discovery.zen.minimum_master_nodes: 2
10、啟動(dòng)服務(wù)
[elasticsearch@elasticsearch-01 config]$ /usr/local/elasticsearch/bin/elasticsearch >/dev/null 2>&1 & [elasticsearch@elasticsearch-02 ~]$ /usr/local/elasticsearch/bin/elasticsearch >/dev/null 2>&1 & [elasticsearch@elasticsearch-03 ~]$ /usr/local/elasticsearch/bin/elasticsearch >/dev/null 2>&1 &
11、國(guó)內(nèi)外使用優(yōu)秀案例
1.2013年初,GitHub拋棄了Solr,采取ElasticSearch 來(lái)做PB級(jí)的搜索。“GitHub使用ElasticSearch搜索20TB的數(shù)據(jù),包括13億文件和1300億行代碼”。
2.維基百科:?jiǎn)?dòng)以elasticsearch為基礎(chǔ)的核心搜索架構(gòu)。
3.SoundCloud:“SoundCloud使用ElasticSearch為1.8億用戶提供即時(shí)而精準(zhǔn)的音樂搜索服務(wù)”。
4.百度:百度目前廣泛使用ElasticSearch作為文本數(shù)據(jù)分析,采集百度所有服務(wù)器上的各類指標(biāo)數(shù)據(jù)及用戶自定義數(shù)據(jù),通過(guò)對(duì)各種數(shù)據(jù)進(jìn)行多維分析展示,輔助定位分析實(shí)例異常或業(yè)務(wù)層面異常。目前覆蓋百度內(nèi)部20多個(gè)業(yè)務(wù)線(包括casio、云分析、網(wǎng)盟、預(yù)測(cè)、文庫(kù)、直達(dá)號(hào)、錢包、風(fēng)控等),單集群最大100臺(tái)機(jī)器,200個(gè)ES節(jié)點(diǎn),每天導(dǎo)入30TB+數(shù)據(jù)。
12、為什么那么多工具適配Elasticsearch
1.Elasticsearch是開源的。
2.Elasticsearch提供了JAVA API接口。
3.Elasticsearch提供了RESTful API接口(不管程序用什么語(yǔ)言開發(fā),任何程序都可以訪問)。
4.更重要的是,REST請(qǐng)求和應(yīng)答是典型的JSON(JavaScript對(duì)象 符號(hào))格式。通常情況下,一個(gè)REST請(qǐng)求包含一個(gè)JSON文件,其回復(fù)都 也是一個(gè)JSON文件。
關(guān)于運(yùn)維學(xué)習(xí)、分享、交流,筆者開通了微信公眾號(hào)【運(yùn)維貓】,感興趣的朋友可以關(guān)注下,歡迎加入,建立屬于我們自己的小圈子,一起學(xué)運(yùn)維知識(shí)。
有需要技術(shù)交流的小伙伴可以加我微信,期待與大家共同成長(zhǎng),本人微信: