一、概述
ELK 是三個(gè)開源軟件的縮寫,分別表示:Elasticsearch , Logstash, Kibana , 它們都是開源軟件。新增了一個(gè) FileBeat,它是一個(gè)輕量級的日志收集處理工具 (Agent),F(xiàn)ilebeat 占用資源少,適合于在各個(gè)服務(wù)器上搜集日志后傳輸給 Logstash,官方也推薦此工具。
大致流程圖如下:
1)Elasticsearch 存儲
?
Elasticsearch 是個(gè)開源分布式搜索引擎,提供搜集、分析、存儲數(shù)據(jù)三大功能。它的特點(diǎn)有:分布式,零配置,自動發(fā)現(xiàn),索引自動分片,索引副本機(jī)制,restful 風(fēng)格接口,多數(shù)據(jù)源,自動搜索負(fù)載等。
2)Filebeat 日志數(shù)據(jù)采集
?
filebeat 是 Beats 中的一員,Beats 在是一個(gè)輕量級日志采集器,其實(shí) Beats 家族有 6 個(gè)成員,早期的 ELK 架構(gòu)中使用 Logstash 收集、解析日志,但是 Logstash 對內(nèi)存、cpu、io 等資源消耗比較高。相比 Logstash,Beats 所占系統(tǒng)的 CPU 和內(nèi)存幾乎可以忽略不計(jì)。
?
Filebeat 是用于轉(zhuǎn)發(fā)和集中日志數(shù)據(jù)的輕量級傳送工具。Filebeat 監(jiān)視您指定的日志文件或位置,收集日志事件。
目前 Beats 包含六種工具:
Packetbeat:網(wǎng)絡(luò)數(shù)據(jù)(收集網(wǎng)絡(luò)流量數(shù)據(jù))
Metricbeat:指標(biāo)(收集系統(tǒng)、進(jìn)程和文件系統(tǒng)級別的 CPU 和內(nèi)存使用情況等數(shù)據(jù))
Filebeat:日志文件(收集文件數(shù)據(jù))
Winlogbeat:windows 事件日志(收集 Windows 事件日志數(shù)據(jù))
Auditbeat:審計(jì)數(shù)據(jù)(收集審計(jì)日志)
Heartbeat:運(yùn)行時(shí)間監(jiān)控(收集系統(tǒng)運(yùn)行時(shí)的數(shù)據(jù))
工作的流程圖如下:
優(yōu)點(diǎn)
Filebeat 只是一個(gè)二進(jìn)制文件沒有任何依賴。它占用資源極少。
缺點(diǎn)
Filebeat 的應(yīng)用范圍十分有限,因此在某些場景下咱們會碰到問題。在 5.x 版本中,它還具有過濾的能力。
3)Kafka
?
kafka 能幫助我們削峰。ELK 可以使用 redis 作為消息隊(duì)列,但 redis 作為消息隊(duì)列不是強(qiáng)項(xiàng)而且 redis 集群不如專業(yè)的消息發(fā)布系統(tǒng) kafka。kafka 安裝可以參考我之前的文章:Kafka 原理介紹+安裝+基本操作(kafka on k8s)[1]。
4)Logstash 過濾
?
Logstash 主要是用來日志的搜集、分析、過濾日志的工具,支持大量的數(shù)據(jù)獲取方式。一般工作方式為 c/s 架構(gòu),client 端安裝在需要收集日志的主機(jī)上,server 端負(fù)責(zé)將收到的各節(jié)點(diǎn)日志進(jìn)行過濾、修改等操作在一并發(fā)往 elasticsearch 上去。
優(yōu)點(diǎn)
可伸縮性
?
節(jié)拍應(yīng)該在一組 Logstash 節(jié)點(diǎn)之間進(jìn)行負(fù)載平衡。建議至少使用兩個(gè) Logstash 節(jié)點(diǎn)以實(shí)現(xiàn)高可用性。每個(gè) Logstash 節(jié)點(diǎn)只部署一個(gè) Beats 輸入是很常見的,但每個(gè) Logstash 節(jié)點(diǎn)也可以部署多個(gè) Beats 輸入,以便為不同的數(shù)據(jù)源公開獨(dú)立的端點(diǎn)。
彈性
?
Logstash 持久隊(duì)列提供跨節(jié)點(diǎn)故障的保護(hù)。對于 Logstash 中的磁盤級彈性,確保磁盤冗余非常重要。對于內(nèi)部部署,建議您配置 RAID。在云或容器化環(huán)境中運(yùn)行時(shí),建議您使用具有反映數(shù)據(jù) SLA 的復(fù)制策略的永久磁盤。
可過濾
?
對事件字段執(zhí)行常規(guī)轉(zhuǎn)換。您可以重命名,刪除,替換和修改事件中的字段。
缺點(diǎn)
Logstash 耗資源較大,運(yùn)行占用 CPU 和內(nèi)存高。另外沒有消息隊(duì)列緩存,存在數(shù)據(jù)丟失隱患。
5)Kibana 展示
?
Kibana 也是一個(gè)開源和免費(fèi)的工具,Kibana 可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以幫助匯總、分析和搜索重要數(shù)據(jù)日志。
filebeat 和 logstash 的關(guān)系
?
因?yàn)?logstash 是 jvm 跑的,資源消耗比較大,所以后來作者又用 golang 寫了一個(gè)功能較少但是資源消耗也小的輕量級的 logstash-forwarder。不過作者只是一個(gè)人,加入 http://elastic.co 公司以后,因?yàn)?es 公司本身還收購了另一個(gè)開源項(xiàng)目 packetbeat,而這個(gè)項(xiàng)目專門就是用 golang 的,有整個(gè)團(tuán)隊(duì),所以 es 公司干脆把 logstash-forwarder 的開發(fā)工作也合并到同一個(gè) golang 團(tuán)隊(duì)來搞,于是新的項(xiàng)目就叫 filebeat 了。
二、helm3 安裝 ELK
詳細(xì)流程圖如下:
1)準(zhǔn)備條件
1、添加 helm 倉庫
$helmrepoaddelastichttps://helm.elastic.co
2)helm3 安裝 elasticsearch
1、自定義 values
?
主要是設(shè)置 storage Class 持久化和資源限制,本人電腦資源有限,所以這里就把資源調(diào)小了很多,小伙伴們可以根據(jù)自己配置自定義哈。
#集群名稱 clusterName:"elasticsearch" #ElasticSearch6.8+默認(rèn)安裝了x-pack插件,部分功能免費(fèi),這里選禁用 esConfig: elasticsearch.yml:| network.host:0.0.0.0 cluster.name:"elasticsearch" xpack.security.enabled:false resources: requests: memory:1Gi volumeClaimTemplate: storageClassName:"bigdata-nfs-storage" accessModes:["ReadWriteOnce"] resources: requests: storage:3Gi service: type:NodePort port:9000 nodePort:31311
?
禁用 Kibana 安全提示(Elasticsearch built-in security features are not enabled)xpack.security.enabled: false
2、開始安裝 Elasitcsearch
?
安裝過程比較慢,因?yàn)楣俜界R像下載比較慢
$helminstalleselastic/elasticsearch-fmy-values.yaml--namespacebigdata
![fcefb8a6-373d-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/D7/wKgaomTnIdSAfn8eAAGT98quQnY812.png)
W12072357.98028321465warnings.go:70]policy/v1beta1PodDisruptionBudgetisdeprecatedinv1.21+,unavailableinv1.25+;usepolicy/v1PodDisruptionBudget W12072358.01541621465warnings.go:70]policy/v1beta1PodDisruptionBudgetisdeprecatedinv1.21+,unavailableinv1.25+;usepolicy/v1PodDisruptionBudget NAME:es LASTDEPLOYED:TueDec723572021 NAMESPACE:bigdata STATUS:deployed REVISION:1 NOTES: 1.Watchallclustermemberscomeup. $kubectlgetpods--namespace=bigdata-lapp=elasticsearch-master-w2.TestclusterhealthusingHelmtest. $helm--namespace=bigdatatestes
查看,需要所有 pod 都正常運(yùn)行才正常,下載鏡像有點(diǎn)慢,需要稍等一段時(shí)間再查看
$kubectlgetpod-nbigdata-lapp=elasticsearch-master $kubectlgetpvc-nbigdata $watchkubectlgetpod-nbigdata-lapp=elasticsearch-master
![fcfcb9ca-373d-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/D7/wKgaomTnIdSAIs0cAAOOP5MOExw894.png)
3、驗(yàn)證
$helm--namespace=bigdatatestes $kubectlgetpod,svc-nbigdata-lapp=elasticsearch-master-owide $curl192.168.0.113:31311/_cat/health $curl192.168.0.113:31311/_cat/nodes
![fd112f72-373d-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/D7/wKgaomTnIdSAdQBmAAOCnDvQKSI478.png)
4、清理
$helmuninstalles-nbigdata $kubectldeletepvcelasticsearch-master-elasticsearch-master-0-nbigdata $kubectldeletepvcelasticsearch-master-elasticsearch-master-1-nbigdata $kubectldeletepvcelasticsearch-master-elasticsearch-master-2-nbigdata
3)helm3 安裝 Kibana
1、自定義 values
域名(elasticsearch-master-headless.bigdata.svc.cluster.local)的由來不清楚的,可以參考我之前的文章:Kubernetes(k8s)DNS(CoreDNS)介紹[2]
$cat<my-values.yaml #此處修改了kibana的配置文件,默認(rèn)位置/usr/share/kibana/kibana.yaml kibanaConfig: kibana.yml:| server.port:5601 server.host:"0.0.0.0" elasticsearch.hosts:["elasticsearch-master-headless.bigdata.svc.cluster.local:9200"] resources: requests: cpu:"1000m" memory:"256Mi" limits: cpu:"1000m" memory:"1Gi" service: #type:ClusterIP type:NodePort loadBalancerIP:"" port:5601 nodePort:"30026" EOF
2、開始安裝 Kibana
$helminstallkibanaelastic/kibana-fmy-values.yaml--namespacebigdata
![fd21de62-373d-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/D7/wKgaomTnIdWACLOMAAAkqkMRRiQ940.png)
3、驗(yàn)證
$kubectlgetpod,svc-nbigdata-lapp=kibana
瀏覽器訪問:http://192.168.0.113:30026/
4、清理
$helmuninstallkibana-nbigdata
4)helm3 安裝 Filebeat
?
filebeat 默認(rèn)收集宿主機(jī)上 docker 的日志路徑:/var/lib/docker/containers。如果我們修改了 docker 的安裝路徑要怎么收集呢,很簡單修改 chart 里的 DaemonSet 文件里邊的 hostPath 參數(shù):
-name:varlibdockercontainers hostPath: path:/var/lib/docker/containers#改為docker安裝路徑
當(dāng)然也可以自定義 values 修改,這里推薦自定義 values 方式修改采集日志路徑
1、自定義 values
?
默認(rèn)是將數(shù)據(jù)存儲到 ES,這里做修改數(shù)據(jù)存儲到 Kafka
$cat<my-values.yaml daemonset: filebeatConfig: filebeat.yml:| filebeat.inputs: -type:container paths: -/var/log/containers/*.log output.elasticsearch: enabled:false host:'${NODE_NAME}' hosts:'${ELASTICSEARCH_HOSTS9200}' output.kafka: enabled:true hosts:["kafka-headless.bigdata.svc.cluster.local:9092"] topic:test EOF
2、開始安裝 Filefeat
$helminstallfilebeatelastic/filebeat-fmy-values.yaml--namespacebigdata $kubectlgetpods--namespace=bigdata-lapp=filebeat-filebeat-w
![fd4fe79e-373d-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/D7/wKgaomTnIdWARsDrAAEmP5_1Iug623.png)
![fd5e3754-373d-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/D7/wKgaomTnIdWAUHG4AAAgIUq3zo0048.png)
3、驗(yàn)證
#先登錄kafka客戶端 $kubectlexec--tty-ikafka-client--namespacebigdata--bash #再消費(fèi)數(shù)據(jù) $kafka-console-consumer.sh--bootstrap-serverkafka.bigdata.svc.cluster.local:9092--topictest
![fd723b28-373d-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/D7/wKgaomTnIdWAUQlAAAd49ZqKuGg217.png)
看到已經(jīng)可以消費(fèi)數(shù)據(jù)了,說明數(shù)據(jù)已經(jīng)存儲到 kafka 了。
查看 kafka 數(shù)據(jù)積壓情況
$kubectlexec--tty-ikafka-client--namespacebigdata--bash $kafka-consumer-groups.sh--bootstrap-serverkafka-0.kafka-headless.bigdata.svc.cluster.local:9092--describe--groupmygroup
發(fā)現(xiàn)大量數(shù)據(jù)都是處于積壓的狀態(tài)
接下來就是部署 logstash 去消費(fèi) kafka 數(shù)據(jù),最后存儲到 ES。
4、清理
$helmuninstallfilebeat-nbigdata
5)helm3 安裝 Logstash
1、自定義 values
?
【注意】記得把 ES 和 kafka 的地址換成自己環(huán)境的。
$cat<my-values.yaml logstashConfig: logstash.yml:| xpack.monitoring.enabled:false logstashPipeline: logstash.yml:| input{ kafka{ bootstrap_servers=>"kafka-headless.bigdata.svc.cluster.local:9092" topics=>["test"] group_id=>"mygroup" #如果使用元數(shù)據(jù)就不能使用下面的byte字節(jié)序列化,否則會報(bào)錯(cuò) #key_deserializer_class=>"org.apache.kafka.common.serialization.ByteArrayDeserializer" #value_deserializer_class=>"org.apache.kafka.common.serialization.ByteArrayDeserializer" consumer_threads=>1 #默認(rèn)為false,只有為true的時(shí)候才會獲取到元數(shù)據(jù) decorate_events=>true auto_offset_reset=>"earliest" } } filter{ mutate{ #從kafka的key中獲取數(shù)據(jù)并按照逗號切割 split=>["[@metadata][kafka][key]",","] add_field=>{ #將切割后的第一位數(shù)據(jù)放入自定義的“index”字段中 "index"=>"%{[@metadata][kafka][key][0]}" } } } output{ elasticsearch{ pool_max=>1000 pool_max_per_route=>200 hosts=>["elasticsearch-master-headless.bigdata.svc.cluster.local:9200"] index=>"test-%{+YYYY.MM.dd}" } } #資源限制 resources: requests: cpu:"100m" memory:"256Mi" limits: cpu:"1000m" memory:"1Gi" volumeClaimTemplate: accessModes:["ReadWriteOnce"] resources: requests: storage:3Gi EOF
output plugin 輸出插件,將事件發(fā)送到特定目標(biāo):
?
stdout { codec => rubydebug } // 開啟 debug 模式,可在控制臺輸出
stdout :標(biāo)準(zhǔn)輸出。將事件輸出到屏幕上
output{ stdout{ codec => "rubydebug" } }
file :將事件寫入文件
output{ file { path => "/data/logstash/%{host}/{application} codec => line { format => "%{message}"} } } }
kafka :將事件發(fā)送到 kafka
output{ kafka{ bootstrap_servers => "localhost:9092" topic_id => "test_topic" #必需的設(shè)置。生成消息的主題 } }
elasticseach :在 es 中存儲日志
output{ elasticsearch { #user => elastic #password => changeme hosts => "localhost:9200" index => "nginx-access-log-%{+YYYY.MM.dd}" } }
2、開始安裝 Logstash
$helminstalllogstashelastic/logstash-fmy-values.yaml--namespacebigdata
![fd980772-373d-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/D7/wKgaomTnIdaAMSGLAAFhYDqwMdU510.png)
$kubectlgetpods--namespace=bigdata-lapp=logstash-logstash
![fdbae346-373d-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/D7/wKgaomTnIdaAfjN_AAA5TC7e3UQ755.png)
3、驗(yàn)證
1、登錄 kibana 查看索引是否創(chuàng)建
2、查看 logs
$kubectllogs-flogstash-logstash-0-nbigdata>logs $tail-100logs
![fdda2120-373d-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/D7/wKgaomTnIdaAMBrRAAZ_alhryBQ663.png)
3、查看 kafka 消費(fèi)情況
$kubectlexec--tty-ikafka-client--namespacebigdata--bash $kafka-consumer-groups.sh--bootstrap-serverkafka-0.kafka-headless.bigdata.svc.cluster.local:9092--describe--groupmygroup
![fdf078bc-373d-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/D7/wKgaomTnIdaADs0FAAKWqoDdq28201.png)
4、通過 kibana 查看索引數(shù)據(jù)(Kibana 版本:7.15.0) 創(chuàng)建索引模式
?
Management-》Stack Management-》Kibana-》Index patterns
通過上面創(chuàng)建的索引模式查詢數(shù)據(jù)(Discover)
4、清理
$helmuninstalllogstash-nbigdata
三、ELK 相關(guān)的備份組件和備份方式
Elasticsearch 備份兩種方式:
將數(shù)據(jù)導(dǎo)出成文本文件,比如通過elasticdump[3]、esm[4]等工具將存儲在 Elasticsearch 中的數(shù)據(jù)導(dǎo)出到文件中。適用數(shù)據(jù)量小的場景。
備份 elasticsearch data 目錄中文件的形式來做快照,借助 Elasticsearch 中 snapshot 接口實(shí)現(xiàn)的功能。適用大數(shù)據(jù)量的場景。
1)Elasticsearch 的 snapshot 快照備份
優(yōu)點(diǎn):通過 snapshot 拍攝快照,然后定義快照備份策略,能夠?qū)崿F(xiàn)快照自動化存儲,可以定義各種策略來滿足自己不同的備份
缺點(diǎn):還原不夠靈活,拍攝快照進(jìn)行備份很快,但是還原的時(shí)候沒辦法隨意進(jìn)行還原,類似虛擬機(jī)快照
1、配置備份目錄
在 elasticsearch.yml 的配置文件中注明可以用作備份路徑 path.repo ,如下所示:
path.repo:["/mount/backups","/mount/longterm_backups"]
配置好后,就可以使用 snapshot api 來創(chuàng)建一個(gè) repository 了,如下我們創(chuàng)建一個(gè)名為 my_backup 的 repository。
PUT/_snapshot/my_backup { "type":"fs", "settings":{ "location":"/mount/backups/my_backup" } }
2、開始通過 API 接口備份
有了 repostiroy 后,我們就可以做備份了,也叫快照,也就是記錄當(dāng)下數(shù)據(jù)的狀態(tài)。如下所示我們創(chuàng)建一個(gè)名為snapshot_1的快照。
PUT/_snapshot/my_backup/snapshot_1?wait_for_completion=true
?
【溫馨提示】wait_for_completion 為 true 是指該 api 在備份執(zhí)行完畢后再返回結(jié)果,否則默認(rèn)是異步執(zhí)行的,我們這里為了立刻看到效果,所以設(shè)置了該參數(shù),線上執(zhí)行時(shí)不用設(shè)置該參數(shù),讓其在后臺異步執(zhí)行即可。
3、增量備份
PUT/_snapshot/my_backup/snapshot_2?wait_for_completion=true
?
當(dāng)執(zhí)行完畢后,你會發(fā)現(xiàn) /mount/backups/my_backup 體積變大了。這說明新數(shù)據(jù)備份進(jìn)來了。要說明的一點(diǎn)是,當(dāng)你在同一個(gè) repository 中做多次 snapshot 時(shí),elasticsearch 會檢查要備份的數(shù)據(jù) segment 文件是否有變化,如果沒有變化則不處理,否則只會把發(fā)生變化的 segment file 備份下來。這其實(shí)就實(shí)現(xiàn)了增量備份。
4、數(shù)據(jù)恢復(fù)
通過調(diào)用如下 api 即可快速實(shí)現(xiàn)恢復(fù)功能:
POST/_snapshot/my_backup/snapshot_1/_restore?wait_for_completion=true { "indices":"index_1", "rename_replacement":"restored_index_1" }
2)elasticdump 備份遷移 es 數(shù)據(jù)
索引數(shù)據(jù)導(dǎo)出為文件(備份)
#導(dǎo)出索引Mapping數(shù)據(jù) $elasticdump --input=http://es實(shí)例IP:9200/index_name/index_type --output=/data/my_index_mapping.json#存放目錄 --type=mapping #導(dǎo)出索引數(shù)據(jù) $elasticdump --input=http://es實(shí)例IP:9200/index_name/index_type --output=/data/my_index.json --type=data
索引數(shù)據(jù)文件導(dǎo)入至索引(恢復(fù))
#Mapping數(shù)據(jù)導(dǎo)入至索引 $elasticdump --output=http://es實(shí)例IP:9200/index_name --input=/home/indexdata/roll_vote_mapping.json#導(dǎo)入數(shù)據(jù)目錄 --type=mapping #ES文檔數(shù)據(jù)導(dǎo)入至索引 $elasticdump --output=http:///es實(shí)例IP:9200/index_name --input=/home/indexdata/roll_vote.json --type=data
可直接將備份數(shù)據(jù)導(dǎo)入另一個(gè) es 集群
$elasticdump--input=http://127.0.0.1:9200/test_event--output=http://127.0.0.2:9200/test_event--type=data
type 類型
type 是 ES 數(shù)據(jù)導(dǎo)出導(dǎo)入類型,Elasticdump 工具支持以下數(shù)據(jù)類型:
type 類型 | 說明 |
---|---|
mapping | ES 的索引映射結(jié)構(gòu)數(shù)據(jù) |
data | ES 的數(shù)據(jù) |
settings | ES 的索引庫默認(rèn)配置 |
analyzer | ES 的分詞器 |
template | ES 的模板結(jié)構(gòu)數(shù)據(jù) |
alias | ES 的索引別名 |
3)esm 備份遷移 es 數(shù)據(jù)
備份 es 數(shù)據(jù)
$esm-shttp://10.33.8.103:9201-x"petition_data"-b5--count=5000--sliced_scroll_size=10--refresh-o=./es_backup.bin
?
-w 表示線程數(shù) -b 表示一次 bulk 請求數(shù)據(jù)大小,單位 MB 默認(rèn) 5M -c 一次 scroll 請求數(shù)量 導(dǎo)入恢復(fù) es 數(shù)據(jù)
$esm-dhttp://172.16.20.20:9201-y"petition_data6"-c5000-b5--refresh-i=./dump.bin
四、彩蛋
還有個(gè)日志系統(tǒng)架構(gòu)跟 ELK 架構(gòu)很相似(Elasticsearch、Flume、Kafka、Flink、Kibana),只是把 Filebeat 換成了 Flume,Logstash 換成了 Flink。后面也會寫篇文章分享出來,請耐心等待……
-
開源軟件
+關(guān)注
關(guān)注
0文章
210瀏覽量
15974 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
9338瀏覽量
86165 -
kubernetes
+關(guān)注
關(guān)注
0文章
227瀏覽量
8761
原文標(biāo)題:如何在 Kubernetes 下快速構(gòu)建企業(yè)級云原生日志系統(tǒng)
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
服務(wù)器遠(yuǎn)程不上服務(wù)器怎么辦?服務(wù)器無法遠(yuǎn)程的原因是什么?
再次升級!阿里云Kubernetes日志解決方案
如何在linux服務(wù)器上使用hanlp
如何在Arm上利用Istio搭建一個(gè)基于Kubernetes的Service Mesh平臺
如何在ESP8266上實(shí)現(xiàn)基于AJAX的網(wǎng)絡(luò)服務(wù)器
![如<b class='flag-5'>何在</b>ESP8266<b class='flag-5'>上</b>實(shí)現(xiàn)基于AJAX的網(wǎng)絡(luò)<b class='flag-5'>服務(wù)器</b>](https://file.elecfans.com/web2/M00/5C/A5/pYYBAGLuJO6AVBxGAABzY4h-Gn0406.png)
vivo大數(shù)據(jù)日志采集Agent設(shè)計(jì)實(shí)踐
分布式實(shí)時(shí)日志:ELK的部署架構(gòu)方案
區(qū)分云服務(wù)器與本地服務(wù)器
![區(qū)分云<b class='flag-5'>服務(wù)器</b>與本地<b class='flag-5'>服務(wù)器</b>](https://file.elecfans.com/web2/M00/92/8D/poYBAGPzKiiAevv3AAJqQoMGVd4490.jpg)
評論