摘要:是一個(gè)日志收集器,支持非常多的輸入源和輸出源。這個(gè)庫(kù)支持展開(kāi)文件路徑,而且會(huì)記錄一個(gè)叫的數(shù)據(jù)庫(kù)文件來(lái)跟蹤被監(jiān)聽(tīng)的日志文件的當(dāng)前讀取位置。
1.Zookeeper
對(duì)于Zookeeper我們用一條簡(jiǎn)單的命令來(lái)測(cè)試一下:
echo ruok|nc localhost 2181
你應(yīng)該可以看到:
imok2.Kafka
Kafka 是由 Linked 開(kāi)發(fā)并且開(kāi)源的一套分布式的流平臺(tái),它類(lèi)似于一個(gè)消息隊(duì)列。 Kafka 的優(yōu)勢(shì)就是適合構(gòu)建實(shí)時(shí)的流數(shù)據(jù)管道,并且可靠地獲取系統(tǒng)和應(yīng)用程序之間的數(shù)據(jù), 還可以實(shí)時(shí)的對(duì)數(shù)據(jù)流進(jìn)行轉(zhuǎn)換。Kafka 的使用場(chǎng)景很多, 特別是在需要高吞吐量的系統(tǒng)上。首先來(lái)理解一下 Kafka 的幾個(gè)基本的概念:
Topic, Kafka 將消息進(jìn)行分類(lèi),每一類(lèi)的消息稱(chēng)之為一個(gè)主題(Topic).
Producer, 發(fā)布消息的對(duì)象稱(chēng)之為主題生產(chǎn)者(Producer)
Consumer, 訂閱消息并處理消息的對(duì)象稱(chēng)之為主題消費(fèi)者(Consumers)
Broker, 已發(fā)布的消息保存在一組服務(wù)器中,稱(chēng)之為Kafka集群。集群中的每一個(gè)服務(wù)器都是一個(gè)代理(Broker)。 消費(fèi)者可以訂閱一個(gè)或多個(gè)主題(topic),并從Broker拉數(shù)據(jù),從而消費(fèi)這些已發(fā)布的消息。
1. 創(chuàng)建一個(gè)主題我們可以登錄到 Kafka 容器中,做一些簡(jiǎn)單的小測(cè)試,登錄到容器中的命令:
docker-compose exec kafka bash
首先來(lái)創(chuàng)建一個(gè)名為test的 Topic ,只有一個(gè)分區(qū)和一個(gè)備份:
kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic test
創(chuàng)建好之后,可以通過(guò)運(yùn)行以下命令,查看topic信息:
kafka-topics.sh --list --zookeeper zookeeper:21812. 發(fā)送消息
Kafka 默認(rèn)有提供了一個(gè)命令行的工具用來(lái)發(fā)送消息,一行是一條消息,運(yùn)行 Producer 然后輸入一些信息:
kafka-console-producer.sh --broker-list localhost:9092 --topic test3. 消費(fèi)消息
Kafka 也提供了一個(gè)消費(fèi)消息的命令行工具,將存儲(chǔ)的信息輸出出來(lái)。
kafka-console-consumer.sh --zookeeper zookeeper:2181 --topic test --from-beginning3. Elasticsearch
ElasticStack技術(shù)棧包括的三個(gè)軟件,而且一開(kāi)始就是5.0的大版本,主要目的是為了讓其他的軟件版本號(hào)一致,方便各個(gè)軟件的對(duì)應(yīng)。不過(guò)到現(xiàn)在已經(jīng)發(fā)展到了6.0的版本了,我們這次就是用這個(gè)版本。具體的更新詳細(xì)可以查看這里Elasticsearch,這里只說(shuō)說(shuō)基本的概念。
Elasticsearch之所以可以方便的進(jìn)行查詢(xún)過(guò)濾排序是因?yàn)楹?MongoDB 一樣存儲(chǔ)的是整個(gè)文檔,然后還會(huì)根據(jù)文檔的內(nèi)容進(jìn)行索引,而且文檔的格式用的還是很友好的 JSON,比如一個(gè)簡(jiǎn)單的用戶(hù)對(duì)象可以這么表示:
{ "name": "Xiao Ming", "phone": "10086", "age": "25", "info": { "site" : "https://sunnyshift.com" "likes": ["games", "music"] } }
在 Elasticsearch 中有四個(gè)名詞,索引(idnex)、類(lèi)型(type)、文檔(document)、字段(field),這四個(gè)字段類(lèi)似于數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)(database), 表(table), 行(row), 列(column), Elasticsearch 可以包含多個(gè)索引,每個(gè)索引可以包含多個(gè)類(lèi)型,每個(gè)類(lèi)型可以包含多個(gè)文檔,每個(gè)文檔可以包含多個(gè)字段,把他想成數(shù)據(jù)庫(kù)就行了。
我們來(lái)簡(jiǎn)單操作一下,先來(lái)創(chuàng)建一個(gè)索引,并且插入幾條數(shù)據(jù):
PUT /banji/xuesheng/1 { "name": "Xiao Ming", "age": "12" } PUT /banji/xuesheng/2 { "name": "Xiao Hong", "age": "16" }
具體操作可以使用 Kibana 上面的 Dev Tools 來(lái)運(yùn)行命令:
有了數(shù)據(jù)之后就可以來(lái)簡(jiǎn)單的檢索一下:
這里只是介紹了一下簡(jiǎn)單的入門(mén)使用,之后可以像一些其他的操作比如過(guò)濾、組合、全文、啥的都不在話(huà)下,甚至還可以高亮搜索結(jié)果。
4. LogstashLogstash 是一個(gè)日志收集器,支持非常多的輸入源和輸出源。我們簡(jiǎn)單的整合一下 ElasticStack 這個(gè)技術(shù)棧,這里用 Nginx 的訪問(wèn)日志來(lái)測(cè)試一下。Logstash 最新的是有一個(gè) Beats 的組件來(lái)收集數(shù)據(jù),這里先不考慮而是使用傳統(tǒng)的配置文件,我們會(huì)直接把配置寫(xiě)到配置文件中。
Logstash 使用一個(gè)名叫 FileWatch 的 Ruby Gem 庫(kù)來(lái)監(jiān)聽(tīng)文件變化。這個(gè)庫(kù)支持 glob 展開(kāi)文件路徑,而且會(huì)記錄一個(gè)叫 .sincedb 的數(shù)據(jù)庫(kù)文件來(lái)跟蹤被監(jiān)聽(tīng)的日志文件的當(dāng)前讀取位置。
使用 Dcoker 后配置文件路徑在logstash/config下,可以在該目錄下放置多個(gè)配置文件,最后 Logstash 會(huì)幫我們合并成一個(gè)。先來(lái)定義一個(gè)讀取 Nginx 訪問(wèn)日志的配置:
input { file { path => [ "/var/log/nginx/access.log"] type => "accesslog" } } output { # 輸出到 elasticsearch,索引名為 access-log elasticsearch { hosts => "localhost:9200" index => "access-log" user => "elastic" password => "changeme" } }
要注意的是這里寫(xiě)的 Nginx 的路徑是相對(duì)于 Logstash 容器的,所以要把該路徑掛載到容器中。然后重啟 Logstash 就可以去 Kibana 中查看日志了, 附上 Logstash 重啟命令。如果一切正常,那么就可以去 Kibana 中日志了。
docker-compose stop logstash docker-compose up -d logstash5. Kibana
Kibana 是一個(gè)可視化的 UI 界面,并且可以檢索聚合分詞搜索在 Elasticsearch 中的數(shù)據(jù),并且還可以以非常精美的圖標(biāo)來(lái)展示統(tǒng)計(jì)數(shù)據(jù)。我們需要在 Management 頁(yè)面中告訴 Kibana 我們剛才創(chuàng)建的 access-log 索引。
到這里就完成了收集 Nginx 系統(tǒng)日志并展示出來(lái),對(duì)于 Kibana 還有很多用法,就不一一撰述了。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/27168.html
摘要:前提好幾周沒(méi)更新博客了,對(duì)不斷支持我博客的童鞋們說(shuō)聲抱歉了。熟悉我的人都知道我寫(xiě)博客的時(shí)間比較早,而且堅(jiān)持的時(shí)間也比較久,一直到現(xiàn)在也是一直保持著更新?tīng)顟B(tài)。 showImg(https://segmentfault.com/img/remote/1460000014076586?w=1920&h=1080); 前提 好幾周沒(méi)更新博客了,對(duì)不斷支持我博客的童鞋們說(shuō)聲:抱歉了!。自己這段時(shí)...
摘要:會(huì)直接把日志發(fā)送給,再由進(jìn)行展示。因?yàn)橐驗(yàn)闀?huì)同步把日志傳輸?shù)剑坏斓魯?shù)據(jù)就有可能會(huì)丟失。于是,我們考慮利用作為緩沖區(qū),讓不受的影響,第一步就是讓把日志發(fā)送到,這里相當(dāng)于。至此,我們就成功把加入到日志分析平臺(tái)的架構(gòu)中。 在上一篇中我們基本上完成了 ELK 和 Kafka 環(huán)境的安裝,并且也通過(guò)幾個(gè)簡(jiǎn)單的例子入門(mén)?,F(xiàn)在我們就把搭建好的架構(gòu)中加入 Kakfa 作為緩沖區(qū)。再來(lái)說(shuō)一下,首先 ...
摘要:導(dǎo)讀本文介紹了基于技術(shù)的企業(yè)級(jí)應(yīng)用容器平臺(tái),從云的定義云服務(wù)分類(lèi),到用友云基礎(chǔ)平臺(tái)平臺(tái)總體架構(gòu)架構(gòu)預(yù)覽部署架構(gòu)平臺(tái)核心價(jià)值和核心競(jìng)爭(zhēng)力,闡述基礎(chǔ)平臺(tái)成為廣大傳統(tǒng)企業(yè)數(shù)字化轉(zhuǎn)型的一把尖刀。 導(dǎo)讀:本文介紹了基于Docker技術(shù)的企業(yè)級(jí)應(yīng)用容器平臺(tái),從云的定義、云服務(wù)分類(lèi),到用友云PaaS基礎(chǔ)平臺(tái)、平臺(tái)總體架構(gòu)、架構(gòu)預(yù)覽、部署架構(gòu)、平臺(tái)核心價(jià)值和核心競(jìng)爭(zhēng)力,闡述PaaS基礎(chǔ)平臺(tái)成為廣大...
閱讀 2929·2023-04-25 17:59
閱讀 758·2023-04-25 15:05
閱讀 725·2021-11-25 09:43
閱讀 3105·2021-10-12 10:13
閱讀 3610·2021-09-27 13:59
閱讀 3635·2021-09-23 11:21
閱讀 3966·2021-09-08 09:35
閱讀 637·2019-08-29 17:12