ELK Stack 教程:開始使用 Elasticsearch、Logstash、Kibana 和 Beats


ELK Stack 是用於檢視和處理 ELK Stack 或 Elastic Stack 中檔案的最佳工具之一。此工具包含 E- Elasticsearch、L- Logstash 和 K- Kibana,這三個開源工具。

ELK Stack 工具用於即時處理和分析大量資料。但是,Beats 是一個開放且獨立的平臺,用於單用途資料傳送器。它將資料從數百或數千個系統和機器傳送到 Elasticsearch 或 Logstash。

ELK Stack 廣泛應用於醫療保健、金融和 IT 等各個行業,用於故障排除、監控和日誌分析。因此,這篇長博文將為您提供有關 ELK Stack 的完整詳細資訊以及在 Linux 中設定它的方法。

ELK Stack 教程:Elasticsearch、Logstash、Kibana 和 Beats

如上所述,ELK Stack 是不同工具的組合,因此讓我們逐一討論它們,以便對其有一個簡要的瞭解 -

  • Elasticsearch - Elasticsearch 是一個用於日誌檔案的可搜尋資料庫,允許高效且快速地檢索資料。主要用於索引和儲存資料。它被用作可搜尋、可擴充套件的資料庫來儲存資料。

  • Logstash - Logstash 充當資料處理管道,從各種來源讀取、收集、轉換和解析資料,然後將資料傳送到 ElasticSearch。此工具從各種來源收集日誌和其他資料,包括應用程式、伺服器和裝置。

  • Kibana - Kibana 使用 Web 瀏覽器介面來組織和顯示資料。此工具高度可配置,以便使用者可以根據需要進行調整。同時,它允許您建立報告和互動式儀表板以分析儲存在 ElasticSearch 中的資料。

    它是一個視覺化工具,提供使用者友好的 UI 來檢視使用者資料。此功能使使用者可以輕鬆地瀏覽和視覺化資料。

  • Beta - Beats 是輕量級資料傳送器或針對單個任務的小型資料收集應用程式。不同的 Beats 應用程式用於各種目的,例如訪問伺服器的其他部分、讀取檔案並將其傳送出去。例如,Packetbeat 分析網路流量,而 Filebeat 用於收集日誌檔案。

注意 - 一些使用者直接使用 Logstash,完全跳過 Beats。同時,一些使用者將 Beats 直接連線到 Elasticsearch。

ELK Stack 的功能

  • JSON 文件複製可搜尋、分片儲存。

  • NRT(近即時)搜尋。

  • 全文搜尋

  • 地理位置和多語言支援。

  • 具有帶有 JSON 輸出的 REST API Web 介面

如何安裝 ELK Stack?

您可以在 Docker、雲和 Chef、Puppet 和 Ansible 等配置管理系統上本地安裝 ELK。您可以根據裝置上使用的 Linux 發行版下載該工具。

安裝 ELK Stack 的先決條件

讓我們使用 Ubuntu 來演示安裝 ELK Stack 的方法 -

步驟 1:更新儲存庫

首先,請根據可用的最新更新更新系統 -

sudo apt update

步驟 2:安裝 Java(Elasticsearch 和 Logstash 需要)

Logstash 安裝需要系統中的 Java 8 或 Java 11。因此,請首先透過以下命令安裝它 -

sudo apt install default-jre

步驟 3:安裝 Nginx

必須公開訪問 Kibana,並且 nginx 配置為反向代理。因此,請執行以下命令來安裝 nginx -

sudo apt install nginx -y

要檢查 nginx 是否已安裝,請轉到瀏覽器並鍵入您的本地 IP 伺服器。如果 nginx 成功安裝,您將看到與以下影像相同的輸出。

完成後,就可以從 apt 設定所有元件了。此外,您還可以直接從官方網站下載這些元件。在這裡,我們將瞭解如何在 Ubuntu 22.04 中分別安裝 ELK Stack 的所有元件。

如何安裝 Elasticsearch

步驟 1:新增 Elasticsearch 金鑰

要安裝 Elasticsearch,首先使用以下命令新增 Elasticsearch 的簽名金鑰 -

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

注意 - 如果您已經安裝了上述軟體包,則可以跳過上述步驟。

現在透過以下命令安裝 transport-https 軟體包 -

sudo apt-get update && sudo apt-get install apt-transport-https

接下來,在終端中執行以下命令以將儲存庫定義新增到您的系統 -

echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

使用以下命令安裝具有 Apache 2.0 許可證的功能的 Elasticsearch 版本 -

echo "deb https://artifacts.elastic.co/packages/oss-7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

步驟 2:安裝 Elasticsearch

現在,更新系統的儲存庫,然後安裝 Elasticsearch -

sudo apt-get update && sudo apt-get install elasticsearch

步驟 3:配置 Elasticsearch

現在讓我們在安裝 Elasticsearch 後配置系統。其配置檔案允許您配置網路設定(如埠和主機),其中包含日誌檔案和記憶體等詳細資訊。使用以下命令新增您的私有 IP 地址以開啟 Elasticsearch 配置檔案 -

sudo nano /etc/elasticsearch/elasticsearch.yml

注意 - 您可以選擇任何編輯器開啟上述配置檔案。

取消註釋配置檔案中上面兩行標記的行,並在 192.168.0.1 處新增您的本地主機。

network host: <local host name>

由於您在此處配置單節點叢集,請轉到“Discovery 部分”並新增以下行。

discovery .type: single-node

JVM 堆大小預設設定為 1GB。您不應將堆大小設定為不超過總記憶體的一半。使用以下命令開啟以下檔案以設定堆大小 -

sudo nano /etc/elasticsearch/jvm.options

因此,請找到以 -Xms(最小值)和 -Xmx(最大值)開頭的行,並將它們的大小設定為 512MB。

-xms512m
-xms512m

步驟 4:執行 Elasticsearch

在完成 Elasticsearch 配置檔案中的所有配置後,使用以下 systemctl 命令啟動並啟用 Elasticsearch 服務 -

sudo systemctl start elasticsearch 
sudo systemctl enable elasticsearch

之後,檢查 Elasticsearch 的狀態 -

sudo systemctl status elasticsearch

步驟 5:驗證已安裝的 Elasticsearch

如果要驗證 Elasticsearch,請執行以下命令 -

https://:9200

此外,您還可以透過在終端中使用以下 curl 命令來確認這一點。

Curl -X GET "localhost:9200"

如果您的輸出與上圖相同,則表示 Elasticsearch 正常工作。

如何安裝 Kibana?

步驟 1:安裝 Kibana

您還可以透過以下命令透過儲存庫安裝 Kibana -

sudo apt install kibana

步驟 2:配置 Kibana

執行以下命令以開啟 Kibana 的配置檔案。

sudo nano /etc/kibana/kibana.yml

刪除以下標記行中的“#”符號以取消註釋以下行 -

server.port: 5601
server.host: "localhost"
elasticsearch.hosts: ["https://:9200"] 

Nginx 中的伺服器塊將路由 localhost 上的所有流量。為此,您必須在以下目錄中建立一個新站點。

sudo nano /etc/nginx/sites-available/file.com

例如,我們將檔案命名為“file.com”並在其中複製以下行 -

server { 
listen 80; 
server_name file.com; 

auth_basic "Restricted Access"; 
auth_basic_user_file /etc/nginx/htpasswd.users; 
location / { 
   proxy_pass https://:5601; 
   proxy_http_version 1.1; 
   proxy_set_header Upgrade $http_upgrade; 
   prxy_set_header Connection 'upgrade'; 
   proxy_set_header Host $host;  
   proxy_cache_bypass $http_upgrade; 
}

上述伺服器將僅在埠 80 上將所有傳入流量重定向到 localhost:5601,Kibana 在該埠上偵聽。除此之外,它還對 Nginx 使用者列表的所有請求進行身份驗證。

使用以下命令建立符號連結以啟用新建立的站點。

sudo ln -s /etc/nginx/sites-available/file.com /etc/nginx/sites-enabled/file.com

接下來,使用以下命令驗證配置檔案是否存在任何配置或語法錯誤 -

sudo nginx -t

預設站點位於 Nginx site-enabled 目錄中,系統可以預設載入它。轉到 Nginx 配置目錄幷包含新建立的檔案“file.com”。

nano /etc/nginx/nginx.conf

最後,儲存配置檔案後重新啟動 Nginx 服務。

步驟 3:啟動並啟用 Kibana

使用簡單的 systemctl 命令啟動並啟用 Kibana。

sudo systemctl start kibana
sudo systemctl enable kibana

要檢查 Kibana 是否正在執行,您可以使用以下命令檢查其狀態 -

sudo systemctl status kibana

現在,您可以在瀏覽器中使用 https://:5601. 開啟 Kibana。

注意 - 如果啟用了 UFW 防火牆,則必須允許埠 5601 上的流量才能訪問 Kibana 儀表板。

sudo ufw allow 5601/tcp

安裝 Logstash

步驟 1:安裝 Logstash

它是 ELK Stack 中高度可定製的元件。您可以使用以下命令直接從儲存庫安裝 Logstash -

sudo apt install logstash

步驟 2:配置 Logstash

此元件的配置檔案位於 /etc/logstash/conf.d/ 中。您可以根據您的要求配置其輸出、過濾器和輸入管道。所有自定義 Logstash 配置檔案都儲存在 /etc/logstash/conf.d/ 中。

步驟 3:啟動並啟用 Logstash

要啟動並啟用 logstash,請執行以下命令。

sudo systemctl start logstsash

您可以使用以下命令檢查 Logstash 的狀態,無論它是否處於活動狀態 -

sudo systemctl status logstsash

安裝 Beats

與大多數其他元件一樣,許多 Beat 的傳送器都可以類似地安裝。因此,讓我們看一下安裝 Metricbeat 的方法。

Metricbeat 傳送系統級指標,例如記憶體、CPU 使用率等。在這裡,我們將資料直接傳送到 Elasticsearch。

步驟 1:安裝 Metricbeat

首先,我們將使用簡單的 apt 命令在伺服器上安裝 Metricbeat -

sudo apt install metricbeat

步驟 2:配置 Metricbeat

在任何您想要的編輯器中開啟 Metricbeat.yml 檔案,然後搜尋 Kibana。之後,透過刪除“#”符號取消註釋 localhost。

sudo /etc/metricbeat/metricbeat.yml
host: "localhost:5601"

類似地,取消註釋 Elasticsearch,它將是本地主機。此外,我們將進行配置,保持其餘設定為預設值。

host: ["localhost:9200"]

透過執行以下命令驗證上述配置。

sudo metribeat test output  

由於上述輸出中沒有錯誤,因此 Kibana 和 Elasticsearch 成功地與 Metricbeat 通訊。如果您的系統模組未啟用,您可以使用以下命令啟用它 -

sudo metricbeat modules enable <module_name>

要檢視每個模組的配置檔案,請轉到 metricbeat 安裝目錄。其所有配置檔案都存在於此 modules.d 目錄中。例如,要開啟 system.yml 模組,請使用以下命令 -

sudo nano /etc/metricbeat/modules.d/system.yml

您可以在上述配置檔案中進行更改,但我們在此處將所有配置保留為預設值。Kibana 使用多個儀表盤來視覺化資料。以下是每個儀表盤的預設儀表盤。使用以下命令設定預設的 Metricbeat 儀表盤:

sudo metricbeat setup

步驟 3:啟動並啟用 Metricbeat

使用以下命令啟動 Metricbeat:

sudo systemctl start metricbeat

檢查 Metricbeat 的當前狀態。

sudo systemctl status metricbeat

現在,Metricbeat 開始監控伺服器並建立 Elasticsearch 索引,您也可以在 Kibana 中定義該索引。

ELK Stack 的優缺點

Elastic Stack 具有某些優點和缺點。

優點

缺點

免費入門

複雜的管理要求

多種程式語言的官方客戶端

擴充套件挑戰

即時資料分析和視覺化

資料保留權衡

集中式日誌記錄功能

穩定性和正常執行時間問題

多種託管選項

高擁有成本

ELK Stack 的用途

即時日誌監控提供了來自各種資源的 Elastic Stack 的許多創造性用例,如下所示:

  • 新應用程式中的錯誤檢測 - 建立任何新應用程式時,ELK Stack 會通知您其錯誤。透過此功能,您可以儘快修復錯誤和漏洞,並改進應用程式的設計。

  • 流量監控 - 它有助於監控網站流量資料,並提供有關伺服器是否過載的資訊。也就是說,ELK Stack 生成資料,使用者可以藉助這些資料做出合理的業務決策並解決問題。

  • 網路抓取 - ELK Stack 可以搜尋、索引和收集來自各種來源的非結構化資料,從而簡化視覺化和收集網路抓取資訊的過程。

  • 電子商務解決方案 - 更快的響應、聚合、索引和全文搜尋提供了更好的使用者體驗。視覺化監控 Elasticsearch 的搜尋行為和趨勢有助於增強趨勢分析。

  • 安全監控 - 伺服器監控系統是 ELK Stack 的重要安全應用程式之一。它有助於使用即時預警系統檢測伺服器攻擊,在注意到異常請求時立即檢查並最大程度地減少其造成的損害。

總結

在本篇博文中,我們解釋了有關 ELK Stack 的簡要詳細資訊。正如我們之前提到的,ELK Stack 是一種開源工具,這意味著您可以免費獲得它。此外,我們描述了設定 ELK Stack 的詳細方法,包括所有相關工具。

更新於: 2023年5月18日

1K+ 瀏覽量

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.