在滴滴雲 DC2 雲伺服器上搭建 ELK 日誌採集系統
前段時間大學同學聚會,一個在讀的博士同學談到他們實驗室做實驗時,物理伺服器需要向老師申請且組內同學都共用那些機器。由於執行一些大資料和人工智慧的專案比較耗費資源,且對資源環境的隔離要求比較高,因而很多時候用機器還得排隊(畢竟學校經費和底層基礎設施沒有公司充裕),不是很方便。於是我就對他說到,為什麼不嘗試在公有云上面購買 VM 呢?便宜又好用,實驗室每個月經費買虛擬機器是 綽綽有餘 的,同時因為公有云可以按需使用,磁碟高可用且支援動態擴容,還能在某個時刻打快照,非常適合搭專案環境使用。
朋友目前的一個實驗任務是從海量分散式系統中收集作業系統、資料庫、訊息中介軟體及應用程式的日誌,並利用大資料演算法挖掘 隱藏 在資料中有潛在價值的資訊。
想到可能還有更多的同學會遇到類似的問題、甚至可能是類似的任務,於是便寫了本篇部落格以幫助有此需要的同學,使之能夠在短時間內搭建一套行之有效的 資料採集系統 ,方便快速上手使用。
快速瞭解 ELK 系統
是一套開源日誌採集套件,使用起來非常方便。先快速瞭解下每個服務是幹什麼的。
-
Filebeat: 利用 Go 語言編寫的日誌檔案爬取工具,所佔系統的記憶體和 CPU 非常小。它能夠實時監控指定日誌目錄或檔案,不斷追蹤讀取這些檔案的變化,最後透過 TCP/IP 協議將日誌資料傳送到其它系統中進行處理。
-
Logstash: 一個基於服務端的資料處理管道,由 JRuby 編寫且執行在 JVM 上,主要用於日誌解析、資料淨化和格式化(轉換成 JSON 格式)。
-
Elasticsearch: 一個基於半結構化儲存的全文搜尋引擎,主要用於對海量日誌資料進行查詢、聚合統計等。資料查詢利用了帶有限狀態轉化機的倒排索引,能夠在秒級查詢到對應的目標。
-
Kibana: 一個 Web UI 介面,能夠對採集到的日誌資料進行視覺化展示,透過豐富的圖表化展現和動態可互動的搜尋功能,讓海量的資料更容易被理解。
在虛擬機器上搭建日誌採集元件
巧婦難為無米之炊。首先,需要在 滴滴雲 上購買一臺 VM。作業系統任意選,這裡我選擇的是 Ubuntu 14.04。由於 ElasticSearch 需要儲存採集到的日誌資料,因而對儲存空間要求相對較高,我選擇了 100G 的磁碟;同時,因為 Logstash 會不停的解析和處理資料,所以 CPU 和記憶體需要適當大一點,這裡我選擇了 2 核 4G 記憶體的配置。現在讓我們開始 ELK 日誌系統搭建之旅。
首先安裝 JDK8
安裝完之後,執行如下命令:
update - alternatives -- config java
可以看到 Java 的 HOME 目錄為 /usr/lib/jvm/java-8-oracle。接著,配置 Java 環境變數,執行如下命令:
vim ~ / . bashrc
在檔案末尾貼上上以下幾行:
為了使配置生效,還需要 source 一下:
source ~ / . bashrc
最後,透過 java -version 檢視 JDK 版本資訊。若出現類似以下顯示,則表明安裝成功:
安裝 ELK 套件
首先,透過 wget 下載 deb 包,以下命令分別下載最新版(6.5.1)的 Filebeat、Logstash、Elasticsearch 和 Kibana:
下載完成後,會存在以下四個 deb 包
-
elasticsearch-6.5.1.deb
-
filebeat-6.5.1-amd64.deb
-
kibana-6.5.1-amd64.deb
-
logstash-6.5.1.deb
之後,就可以透過 dpkg -i xxx.deb 命令進行安裝了
修改配置檔案,讓資料流打通
-
進入 /etc/filebeat 目錄,修改 filebeat.yml 檔案,設定要採集的日誌檔案路徑,和要傳送到的 Logstash IP 地址。由於是在同一臺 VM 上混部,所以 IP 可以設定為 127.0.0.1。若 Logstash 部署在另外一臺 VM 上,則需要配置那臺 VM 的 IP 地址。
Filebeat 包中已經安裝了預設的 索引模板 (index template)。 如果你採用 filebeat.yml 檔案的預設配置,即 Filebeat 直連 ElasticSearch 時,會自動上傳索引模板(filebeat.template.json),該索引模板定義了索引名及如何對 Filebeat 上傳的資料建立索引。但是如何需要將日誌傳送到 Logstash 中,則不會自動上傳索引模板,必須手動上傳,因此需要執行如下命令:
curl - XPUT - H 'Content-Type: application/json' http : //localhost:9200/_template/filebeat-6.5.1 -d@filebeat.template.json
-
在 /etc/logstash/conf.d 目錄下面建立 pipeline.yml,並輸入如下內容:
而且,需要進入到 /usr/share/logstash/bin 目錄,執行如下命令安裝
logstash-input-beats
外掛:
. / logstash - plugin install logstash - input - beats
-
進入到 /etc/elasticsearch 目錄中,修改 elasticsearch.yml 檔案:
-
進入到 /etc/kibana 目錄,修改 kibana.yml 檔案。此處的 server.host 一定要配置成
0.0.0.0
:
最後,啟動所有的服務,在 /usr/share/(elk)/bin 目錄中執行啟動檔案,啟動時注意使用者許可權的問題。同時記住要先啟 Elasticserch,再啟 Kibana,否則會報錯。待準備環境都就緒之後,就可以執行 Filebeat 爬取日誌資料了。此時登入到瀏覽器,可以透過 Kibana UI 介面檢索( 視覺化 )海量日誌內容,如果需要定製化介面或者將日誌資料拉出來用於其它用途,則可以呼叫 Elasticsearch 的 RESTful API 與之進行互動。
總結
隨著分散式系統的普及,如何在眾多物理伺服器上採集海量日誌並進行統一處理,然後利用大資料演算法挖掘日誌中有潛在價值的資訊,變得越來越重要。
本文只是在單臺 VM 上搭建了一套日誌採集環境,進行演示。如果需要在分散式系統中使用,也很簡單,只需將 Filebeat 獨立安裝在各個宿主機上就可以了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559758/viewspace-2284081/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在滴滴雲 DC2 雲伺服器上搭建 RabbitMQ 叢集伺服器MQ
- 在滴滴雲 DC2 雲伺服器上搭建 ZooKeeper 叢集實戰(一)伺服器
- 在滴滴雲 DC2 雲伺服器上搭建 Codis 實戰伺服器
- 在滴滴雲 DC2 雲伺服器上搭建 MongoDB 實戰伺服器MongoDB
- 如何在滴滴雲 DC2 上搭建 ETCD 叢集
- 在滴滴雲DC2伺服器上搭建DPDK應用例項伺服器
- 在滴滴雲 DC2 雲伺服器上使用 LVM 管理磁碟伺服器LVM
- 如何在滴滴雲 DC2 上搭建高可用 MySQL 叢集MySql
- 在滴滴雲 DC2 伺服器上搭建 Gitlab+Jenkins 的整合環境伺服器GitlabJenkins
- 在滴滴雲上搭建 MongoDB 叢集 (一):MongoDB
- Windows系統搭建ELK日誌收集伺服器Windows伺服器
- 在滴滴雲上搭建 Redis-Cluster 叢集Redis
- 如何在滴滴雲 DC2 上搭建 MySQL 服務MySql
- 在滴滴雲 DC2 伺服器上部署 Ghost伺服器
- 如何在滴滴雲 DC2 上搭建 ProxySQL 中介軟體SQL
- 在Docker上搭建ELK+Filebeat日誌中心Docker
- ELK太重?試試KFC日誌採集
- 在滴滴雲上學習 Kubernetes v1.13.0:叢集搭建
- 滴滴雲上搭建 Gluster
- SpringCloud微服務實戰——搭建企業級開發框架(三十八):搭建ELK日誌採集與分析系統SpringGCCloud微服務框架
- 基於滴滴雲伺服器搭建 Consul 叢集伺服器
- ELK日誌分析系統
- 基於滴滴雲 DC2 搭建 VPP 應用例項
- ELK-日誌分析系統
- 在滴滴雲 DC2 編譯安裝最新 GCC 版本編譯GC
- 輕量級日誌採集系統Loki搭建:Loki + Promtail+GrafanaLokiAIGrafana
- 在滴滴雲上搭建 API-Gateway Kong 實踐APIGateway
- ELK+FileBeat日誌分析系統
- ELK日誌分析系統詳解
- 使用 ELK 搭建日記系統
- 騰訊雲容器服務日誌採集最佳實踐
- 滴滴雲GPU雲伺服器Ubuntu系統安裝Ubuntu桌面GPU伺服器Ubuntu
- ELK 日誌分析系統 ----------- 部署ElasticSearch群集Elasticsearch
- 企業級日誌分析系統——ELK
- ELK+kafka+Winlogbeat/FileBeat搭建統一日誌收集分析管理系統Kafka
- ELK日誌系統之通用應用程式日誌接入方案
- 日誌採集/分析
- Kubernetes日誌採集