中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

億級(jí)ELK日志平臺(tái)構(gòu)建實(shí)踐-創(chuàng)新互聯(lián)

億級(jí) ELK 日志平臺(tái)構(gòu)建實(shí)踐

成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括青岡網(wǎng)站建設(shè)、青岡網(wǎng)站制作、青岡網(wǎng)頁(yè)制作以及青岡網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,青岡網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到青岡省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

本篇主要講工作中的真實(shí)經(jīng)歷,我們?cè)趺创蛟靸|級(jí)日志平臺(tái),同時(shí)手把手教大家建立起這樣一套億級(jí) ELK 系統(tǒng)。日志平臺(tái)具體發(fā)展歷程可以參考上篇 「從 ELK 到 EFK 演進(jìn)」

廢話不多說(shuō),老司機(jī)們座好了,我們準(zhǔn)備發(fā)車了~~~

整體架構(gòu)

億級(jí) ELK 日志平臺(tái)構(gòu)建實(shí)踐

整體架構(gòu)主要分為 4 個(gè)模塊,分別提供不同的功能

Filebeat:輕量級(jí)數(shù)據(jù)收集引擎?;谠?Logstash-fowarder 的源碼改造出來(lái)。換句話說(shuō):Filebeat就是新版的 Logstash-fowarder,也會(huì)是 ELK Stack 在 Agent 的第一選擇。

Kafka: 數(shù)據(jù)緩沖隊(duì)列。作為消息隊(duì)列解耦了處理過(guò)程,同時(shí)提高了可擴(kuò)展性。具有峰值處理能力,使用消息隊(duì)列能夠使關(guān)鍵組件頂住突發(fā)的訪問(wèn)壓力,而不會(huì)因?yàn)橥话l(fā)的超負(fù)荷的請(qǐng)求而完全崩潰。

Logstash:數(shù)據(jù)收集處理引擎。支持動(dòng)態(tài)的從各種數(shù)據(jù)源搜集數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行過(guò)濾、分析、豐富、統(tǒng)一格式等操作,然后存儲(chǔ)以供后續(xù)使用。

Elasticsearch:分布式搜索引擎。具有高可伸縮、高可靠、易管理等特點(diǎn)??梢杂糜谌臋z索、結(jié)構(gòu)化檢索和分析,并能將這三者結(jié)合起來(lái)。Elasticsearch 基于 Lucene 開(kāi)發(fā),現(xiàn)在使用最廣的開(kāi)源搜索引擎之一,Wikipedia 、StackOverflow、Github 等都基于它來(lái)構(gòu)建自己的搜索引擎。

Kibana:可視化化平臺(tái)。它能夠搜索、展示存儲(chǔ)在 Elasticsearch 中索引數(shù)據(jù)。使用它可以很方便的用圖表、表格、地圖展示和分析數(shù)據(jù)。

版本說(shuō)明
Filebeat: 6.2.4
Kafka: 2.11-1
Logstash: 6.2.4
Elasticsearch: 6.2.4
Kibana: 6.2.4

相應(yīng)的版本最好下載對(duì)應(yīng)的插件
具體實(shí)踐

我們就以比較常見(jiàn)的 Nginx 日志來(lái)舉例說(shuō)明下,日志內(nèi)容是 JSON 格式

{"@timestamp":"2017-12-27T16:38:17+08:00","host":"192.168.56.11","clientip":"192.168.56.11","size":26,"responsetime":0.000,"upstreamtime":"-","upstreamhost":"-","http_host":"192.168.56.11","url":"/nginxweb/index.html","domain":"192.168.56.11","xff":"-","referer":"-","status":"200"}
{"@timestamp":"2017-12-27T16:38:17+08:00","host":"192.168.56.11","clientip":"192.168.56.11","size":26,"responsetime":0.000,"upstreamtime":"-","upstreamhost":"-","http_host":"192.168.56.11","url":"/nginxweb/index.html","domain":"192.168.56.11","xff":"-","referer":"-","status":"200"}
{"@timestamp":"2017-12-27T16:38:17+08:00","host":"192.168.56.11","clientip":"192.168.56.11","size":26,"responsetime":0.000,"upstreamtime":"-","upstreamhost":"-","http_host":"192.168.56.11","url":"/nginxweb/index.html","domain":"192.168.56.11","xff":"-","referer":"-","status":"200"}
{"@timestamp":"2017-12-27T16:38:17+08:00","host":"192.168.56.11","clientip":"192.168.56.11","size":26,"responsetime":0.000,"upstreamtime":"-","upstreamhost":"-","http_host":"192.168.56.11","url":"/nginxweb/index.html","domain":"192.168.56.11","xff":"-","referer":"-","status":"200"}
{"@timestamp":"2017-12-27T16:38:17+08:00","host":"192.168.56.11","clientip":"192.168.56.11","size":26,"responsetime":0.000,"upstreamtime":"-","upstreamhost":"-","http_host":"192.168.56.11","url":"/nginxweb/index.html","domain":"192.168.56.11","xff":"-","referer":"-","status":"200"}
Filebeat

為什么用 Filebeat ,而不用原來(lái)的 Logstash 呢?

原因很簡(jiǎn)單,資源消耗比較大。

由于 Logstash 是跑在 JVM 上面,資源消耗比較大,后來(lái)作者用 GO 寫(xiě)了一個(gè)功能較少但是資源消耗也小的輕量級(jí)的 Agent 叫 Logstash-forwarder。

后來(lái)作者加入 elastic.co 公司, Logstash-forwarder 的開(kāi)發(fā)工作給公司內(nèi)部 GO 團(tuán)隊(duì)來(lái)搞,最后命名為 Filebeat。

Filebeat 需要部署在每臺(tái)應(yīng)用服務(wù)器上,可以通過(guò) Salt 來(lái)推送并安裝配置。

下載
$ wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.2.4-darwin-x86_64.tar.gz
解壓
tar -zxvf filebeat-6.2.4-darwin-x86_64.tar.gz
mv filebeat-6.2.4-darwin-x86_64 filebeat
cd filebeat
修改配置

修改 Filebeat 配置,支持收集本地目錄日志,并輸出日志到 Kafka 集群中

$ vim fileat.yml
filebeat.prospectors:
- input_type: log
  paths:
    -  /opt/logs/server/nginx.log
  json.keys_under_root: true
  json.add_error_key: true
  json.message_key: log

output.kafka:   
  hosts: ["192.168.0.1:9092,192.168.0.2:9092,192.168.0.3:9092"]
  topic: 'nginx'

Filebeat 6.0 之后一些配置參數(shù)變動(dòng)比較大,比如 document_type 就不支持,需要用 fields 來(lái)代替等等。

啟動(dòng)
$ ./filebeat -e -c filebeat.yml
Kafka

生產(chǎn)環(huán)境中 Kafka 集群中節(jié)點(diǎn)數(shù)量建議為(2N + 1 )個(gè),這邊就以 3 個(gè)節(jié)點(diǎn)舉例

下載

直接到官網(wǎng)下載 Kafka

$ wget http://mirror.bit.edu.cn/apache/kafka/1.0.0/kafka_2.11-1.0.0.tgz
解壓
tar -zxvf kafka_2.11-1.0.0.tgz
mv kafka_2.11-1.0.0 kafka
cd kafka
修改 Zookeeper 配置

修改 Zookeeper 配置,搭建 Zookeeper 集群,數(shù)量 ( 2N + 1 ) 個(gè)

ZK 集群建議采用 Kafka 自帶,減少網(wǎng)絡(luò)相關(guān)的因素干擾

$ vim zookeeper.properties

tickTime=2000
dataDir=/opt/zookeeper
clientPort=2181
maxClientCnxns=50
initLimit=10
syncLimit=5

server.1=192.168.0.1:2888:3888
server.2=192.168.0.2:2888:3888
server.3=192.168.0.3:2888:3888

Zookeeper data 目錄下面添加 myid 文件,內(nèi)容為代表 Zooekeeper 節(jié)點(diǎn) id (1,2,3),并保證不重復(fù)

$ vim /opt/zookeeper/myid
1
啟動(dòng) Zookeeper 節(jié)點(diǎn)

分別啟動(dòng) 3 臺(tái) Zookeeper 節(jié)點(diǎn),保證集群的高可用

$ ./zookeeper-server-start.sh -daemon ./config/zookeeper.properties
修改 Kafka 配置

kafka 集群這邊搭建為 3 臺(tái),可以逐個(gè)修改 Kafka 配置,需要注意其中 broker.id 分別 (1,2,3)

$ vim ./config/server.properties
broker.id=1
port=9092
host.name=192.168.0.1
num.replica.fetchers=1
log.dirs=/opt/kafka_logs
num.partitions=3
zookeeper.connect=192.168.0.1: 192.168.0.2: 192.168.0.3:2181
zookeeper.connection.timeout.ms=6000
zookeeper.sync.time.ms=2000
num.io.threads=8
num.network.threads=8
queued.max.requests=16
fetch.purgatory.purge.interval.requests=100
producer.purgatory.purge.interval.requests=100
delete.topic.enable=true
啟動(dòng) Kafka 集群

分別啟動(dòng) 3 臺(tái) Kafka 節(jié)點(diǎn),保證集群的高可用

$ ./bin/kafka-server-start.sh -daemon ./config/server.properties

查看 topic 是否創(chuàng)建成功

$ bin/kafka-topics.sh --list --zookeeper localhost:2181

nginx
監(jiān)控 Kafka Manager

Kafka-manager 是 Yahoo 公司開(kāi)源的集群管理工具。

可以在 Github 上下載安裝:https://github.com/yahoo/kafka-manager

億級(jí) ELK 日志平臺(tái)構(gòu)建實(shí)踐

如果遇到 Kafka 消費(fèi)不及時(shí)的話,可以通過(guò)到具體 cluster 頁(yè)面上,增加 partition。Kafka 通過(guò) partition 分區(qū)來(lái)提高并發(fā)消費(fèi)速度

億級(jí) ELK 日志平臺(tái)構(gòu)建實(shí)踐

Logstash

Logstash 提供三大功能

  • INPUT 進(jìn)入
  • FILTER 過(guò)濾功能
  • OUTPUT 出去

如果使用 Filter 功能的話,強(qiáng)烈推薦大家使用 Grok debugger 來(lái)預(yù)先解析日志格式。

億級(jí) ELK 日志平臺(tái)構(gòu)建實(shí)踐

下載
$ wget https://artifacts.elastic.co/downloads/logstash/logstash-6.2.4.tar.gz
解壓重命名
$ tar -zxvf logstash-6.2.4.tar.gz
$ mv logstash-6.2.4 logstash
修改 Logstash 配置

修改 Logstash 配置,使之提供 indexer 的功能,將數(shù)據(jù)插入到 Elasticsearch 集群中

$ vim nginx.conf

input {
  kafka {
    type => "kafka"
    bootstrap_servers => "192.168.0.1:2181,192.168.0.2:2181,192.168.0.3:2181"
    topics => "nginx"
    group_id => "logstash"
    consumer_threads => 2
  }
}

output {
  elasticsearch {
    host => ["192.168.0.1","192.168.0.2","192.168.0.3"]
    port => "9300"
    index => "nginx-%{+YYYY.MM.dd}"
  }
}
啟動(dòng) Logstash
$ ./bin/logstash -f nginx.conf
Elasticsearch 下載
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz
解壓
$ tar -zxvf elasticsearch-6.2.4.tar.gz
$ mv elasticsearch-6.2.4.tar.gz elasticsearch
修改配置
$ vim config/elasticsearch.yml

cluster.name: es 
node.name: es-node1
network.host: 192.168.0.1
discovery.zen.ping.unicast.hosts: ["192.168.0.1"]
discovery.zen.minimum_master_nodes: 1
啟動(dòng)

通過(guò) -d 來(lái)后臺(tái)啟動(dòng)

$ ./bin/elasticsearch -d

打開(kāi)網(wǎng)頁(yè) http://192.168.0.1:9200/, 如果出現(xiàn)下面信息說(shuō)明配置成功

{
    name: "es-node1",
    cluster_name: "es",
    cluster_uuid: "XvoyA_NYTSSV8pJg0Xb23A",
    version: {
        number: "6.2.4",
        build_hash: "ccec39f",
        build_date: "2018-04-12T20:37:28.497551Z",
        build_snapshot: false,
        lucene_version: "7.2.1",
        minimum_wire_compatibility_version: "5.6.0",
        minimum_index_compatibility_version: "5.0.0"
    },
    tagline: "You Know, for Search"
}
控制臺(tái)

Cerebro 這個(gè)名字大家可能覺(jué)得很陌生,其實(shí)過(guò)去它的名字叫 kopf !因?yàn)?Elasticsearch 5.0 不再支持 site plugin,所以 kopf 作者放棄了原項(xiàng)目,另起爐灶搞了 cerebro,以獨(dú)立的單頁(yè)應(yīng)用形式,繼續(xù)支持新版本下 Elasticsearch 的管理工作。

億級(jí) ELK 日志平臺(tái)構(gòu)建實(shí)踐

注意點(diǎn)
  1. Master 與 Data 節(jié)點(diǎn)分離,當(dāng) Data 節(jié)點(diǎn)大于 3 個(gè)的時(shí)候,建議責(zé)任分離,減輕壓力
  2. Data Node 內(nèi)存不超過(guò) 32G ,建議設(shè)置成 31 G ,具體原因可以看上一篇文章
  3. discovery.zen.minimum_master_nodes 設(shè)置成 ( total / 2 + 1 ),避免腦裂情況
  4. 最重要的一點(diǎn),不要將 ES 暴露在公網(wǎng)中,建議都安裝 X-PACK ,來(lái)加強(qiáng)其安全性
kibana 下載
$ wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.4-darwin-x86_64.tar.gz
解壓
$ tar -zxvf kibana-6.2.4-darwin-x86_64.tar.gz
$ mv kibana-6.2.4-darwin-x86_64.tar.gz kibana
修改配置
$ vim config/kibana.yml

server.port: 5601
server.host: "192.168.0.1"
elasticsearch.url: "http://192.168.0.1:9200"
啟動(dòng) Kibana
$ nohup ./bin/kibana &
界面展示

創(chuàng)建索引頁(yè)面需要到Management -> Index Patterns中通過(guò)前綴來(lái)指定

億級(jí) ELK 日志平臺(tái)構(gòu)建實(shí)踐

最終效果展示

億級(jí) ELK 日志平臺(tái)構(gòu)建實(shí)踐

總結(jié)

綜上,通過(guò)上面部署命令來(lái)實(shí)現(xiàn) ELK 的整套組件,包含了日志收集、過(guò)濾、索引和可視化的全部流程,基于這套系統(tǒng)實(shí)現(xiàn)分析日志功能。同時(shí),通過(guò)水平擴(kuò)展 Kafka、Elasticsearch 集群,可以實(shí)現(xiàn)日均億級(jí)的日志實(shí)時(shí)處理。


所有好的架構(gòu)設(shè)計(jì)首要的原則并不是追求先進(jìn),而是合理性,要與公司的業(yè)務(wù)規(guī)模和發(fā)展趨勢(shì)相匹配,任何一個(gè)公司,哪怕是現(xiàn)在看來(lái)規(guī)模非常大的公司,比如 BAT 之類,在一開(kāi)始,其系統(tǒng)架構(gòu)也應(yīng)簡(jiǎn)單和清晰的。

但隨著業(yè)務(wù)范圍不斷擴(kuò)充,業(yè)務(wù)規(guī)模不斷擴(kuò)大,系統(tǒng)漸進(jìn)復(fù)雜和龐大,讓所有系統(tǒng)都遇到高可用的問(wèn)題。那我們?cè)撊绾伪苊忸愃频膯?wèn)題,構(gòu)建高可用系統(tǒng)呢?

為此我特意寫(xiě)了一個(gè)專欄《帶你玩轉(zhuǎn)高可用》,將多年來(lái)在百度和滬江的架構(gòu)設(shè)計(jì)實(shí)戰(zhàn)經(jīng)驗(yàn),集結(jié)成這個(gè)專欄。

本專欄總共包含 15 篇文章,分成三大模塊詳細(xì)解釋高可用架構(gòu)的相關(guān)知識(shí):

概念篇:介紹高可用架構(gòu)理論與演進(jìn),這塊比較偏理論。不過(guò)對(duì)于我們理解整套體系還是有必須的。
工程篇:介紹常見(jiàn)互聯(lián)網(wǎng)分層中每一層高可用是怎么做的,包含 DNS、服務(wù)層、緩存層、數(shù)據(jù)層等
問(wèn)題篇:介紹怎么排查線上常用的故障,包括機(jī)器、應(yīng)用層等維度故障定位
專欄每周都會(huì)更新,持續(xù) 64 天。在這將近 2 個(gè)月內(nèi),我會(huì)帶著大家去全面了解高可用架構(gòu)的方方面面,同時(shí)會(huì)將遇到的這些問(wèn)題和對(duì)應(yīng)的解決方案拋出來(lái),希望大家不要重復(fù)我遇到過(guò)的坑。同時(shí)也期待大家提出有意思的問(wèn)題。

專欄地址:帶你玩轉(zhuǎn)高可用
億級(jí) ELK 日志平臺(tái)構(gòu)建實(shí)踐

當(dāng)前題目:億級(jí)ELK日志平臺(tái)構(gòu)建實(shí)踐-創(chuàng)新互聯(lián)
URL鏈接:http://www.rwnh.cn/article44/dcioee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、靜態(tài)網(wǎng)站、微信小程序、網(wǎng)站導(dǎo)航、GoogleApp開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
县级市| 新龙县| 韶山市| 丹寨县| 应城市| 宁武县| 犍为县| 福建省| 湘潭县| 甘谷县| 独山县| 英吉沙县| 察雅县| 怀集县| 玉山县| 浙江省| 兴仁县| 武川县| 大渡口区| 浦县| 泗洪县| 延寿县| 梅河口市| 安义县| 姜堰市| 苍溪县| 辛集市| 抚宁县| 梧州市| 镇沅| 固镇县| 呼图壁县| 靖宇县| 酒泉市| 岑溪市| 全南县| 凯里市| 永顺县| 柞水县| 丹凤县| 兴海县|