­

手摸手 Elastic Stack 使用教程 – 環境安裝

前言

在日常的開發中,會涉及到對一些中間件以及基礎組件的使用,日誌匯總分析、APM 監控、介面的健康檢查、站內搜索,以及對於伺服器、nginx、iis 等等的監控,最近的幾個需求點,都和 Elastic Stack 有著很大的聯繫,有些需求可能使用 Elastic Stack 並不會是最優的方案,本著減少後期運維風險的原則,所以這裡選擇了統一

因此自己之前也沒接觸過,所以私底下就自己捯飭捯飭,看看如何使用,畢竟,技多不壓身,當然,能夠使用的前提是有環境支援,所以第一步需要在本地安裝上 Elastic Stack

Step by Step

2.1、介紹&準備

Elastic Stack,主要包含了 Elasticsearch(數據存儲)和 Kibana(可視化管理)以及一系列的插件,插件最終實現的也是將各種指標、日誌、數據抽取到 elasticsearch 中,通過 kibana 進行可視化的展示、數據分析

作為整個技術棧的基礎,所以首先需要安裝的就是 elasticsearch 和 kibana

雖然也可以安裝在 windows 上,但是本著不給自己找事的原則,以及出了問題好尋找解決方案,這裡選擇將 Elastic Stack 安裝到 CentOS 7.6 上

因為我是使用的 RPM 進行安裝的,由於某些原因,官網提供的組件包下載地址,如果沒有特殊手段的話,可能會下載到地老天荒,因此這裡可以使用中國的鏡像地址進行下載,我是使用的清華的鏡像進行下載的(鏈接直達),你可以依據自己的喜好來選擇鏡像地址

鏡像地址

2.2、下載組件包

登錄伺服器,通過 wget 命令下載 elasticsearch 和 kibana or 直接在本地下載好然後再丟到伺服器上,這裡需要注意,確保 elasticsearch、kibana 以及後續使用的各個插件的版本一定要保持一致,不然的話可能會存在一些莫名其妙的問題

-- 下載 elasticsearch
wget //mirrors.tuna.tsinghua.edu.cn/elasticstack/yum/elastic-7.x/7.9.0/elasticsearch-7.9.0-x86_64.rpm

-- 下載 kibana
wget //mirrors.tuna.tsinghua.edu.cn/elasticstack/yum/elastic-7.x/7.9.0/kibana-7.9.0-x86_64.rpm

組件下載

2.3、安裝與配置

2.3.1、配置 elasticsearch

當組件下載完成後,就可以開始程式的安裝,因為我是使用的 RPM 包,所以這裡可以直接通過 rpm 命令完成 elasticsearch 的安裝

sudo rpm --install elasticsearch-7.9.0-x86_64.rpm

安裝完成

當命令執行完成後,可以看到,控制台已經很清楚的提醒我們,通過 systemctl 指令就可以完成對於 elasticsearch 服務的管理

-- 設置開機自啟
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service

-- 啟動 elasticsearch 服務
sudo systemctl start elasticsearch.service

啟動 elasticsearch

啟動之後,可以在伺服器上通過 curl 127.0.0.1:9200 來驗證我們的 elasticsearch 是否已經安裝成功,如果可以顯示出服務的相關資訊,則代表 elasticsearch 已經安裝成功了

與 mysql、mongodb 相同,默認情況下,elasticsearch 是不允許遠程訪問服務的,但是,鑒於實際的使用情況,這裡需要修改配置文件,從而允許遠程訪問伺服器上的 elasticsearch 服務

首先,通過 whereis elasticsearch 命令查找程式的安裝路徑,這裡會有兩個路徑,通過查閱官方文檔可以得知,/etc/elasticsearch 是配置文件所在的路徑,而 /usr/share/elasticsearch 則是 elasticsearch 的運行路徑所在

切換到 /etc/elasticsearch 目錄下,打開 elasticsearch.yml 文件,找到 Network 節點,調整如下的配置,從而允許遠程訪問服務。PS,因為配置文件是 yml 文件,所以這裡的對於內容格式有著很嚴格的要求,一定不能忘記 : 後面的空格

network.host: 0.0.0.0

允許遠程訪問

當配置文件被修改後,需要重新啟動 elasticsearch 服務,通過 systemctl 命令來重啟服務,不出意外的話,你會發現服務啟動不起來 😏

-- 重啟 elasticsearch 服務
systemctl restart elasticsearch.service

這裡我們可以通過 systemctl status 來查看服務無法正常啟動的原因

systemctl status elasticsearch.service -l

重啟失敗

在控制台列印的資訊中,我們重點關注錯誤資訊中的這句話,可以看到,我們需要針對 elasticsearch 進行節點的相關配置,因為這裡採用的只是單機單節點,並不會搭建集群,因此,重新打開 elasticsearch.yml 文件,修改如下的配置項即可

the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

# 設置集群名稱
cluster.name: elastic-cluster

# 設置節點名稱
node.name: node-mater

# 默認初始化的節點名稱
cluster.initial_master_nodes: ["node-mater"]

當然,你也可以直接修改配置文件,指明當前的 elasticsearch 服務以單節點的形式運行,不過,不推薦這種方式

discovery.type: single-node

保存對於配置文件的修改,重新執行啟動服務的命令,可以看到服務已經啟動以來了,當然,此時如果你想要通過遠程訪問該服務的話,還請確保伺服器的防火牆有開放 9200 埠,此時再通過瀏覽器訪問即可打開如下的頁面

-- 永久開放 9200 埠
sudo firewall-cmd --zone=public --add-port=9200/tcp --permanent

-- 重啟防火牆
firewall-cmd --reload

遠程訪問 elasticsearch 服務

2.3.2、安裝 kibana

與安裝 elasticsearch 時相似,回到文件所在的路徑,通過 rpm 命令,就可以完成 kibana 的安裝,之後就可以通過 systemctl 來控制 kibana 的啟動

-- 回到用戶的根目錄
cd ~

-- 安裝 kibana
sudo rpm --install kibana-7.9.0-x86_64.rpm

-- 設置開機自啟
sudo systemctl daemon-reload
sudo systemctl enable kibana.service

-- 啟動 elasticsearch 服務
sudo systemctl start kibana.service

安裝 kibana

因為 kibana 是對 elasticsearch 中的數據進行可視化管理的,所以這裡需要修改 kibana 的配置文件來完成與 elasticsearch 的串接,與 elasticsearch 配置文件所在的路徑相似,kibana 的配置文件位於 /etc/kibana 路徑下,找到 kibana.yml 文件,需要調整的配置項如下

## 允許遠程訪問
server.host: "0.0.0.0"

## 設置服務的名稱
server.name: "elastic-kibana"

## 設置需要連接的 elasticsearch 服務地址
elasticsearch.hosts: ["localhost:9200"]

## 設置頁面通過中文顯示
i18n.locale: "zh-CN"

當然,別忘了開放伺服器的 5601 埠,從而允許遠程訪問

-- 永久開放 5601 埠
sudo firewall-cmd --zone=public --add-port=5601/tcp --permanent

-- 重啟防火牆
firewall-cmd --reload

訪問 kibana

在重新啟動 kibana 之後,如果你立刻通過瀏覽器訪問可能會提示下面的內容,嗯,請坐和放寬,等一會,多刷新幾次就可以了,如果一直出現下面這個提示,可通過 systemctl status 命令來查看具體是 elasticsearch or kibana 出問題了,畢竟就這兩個服務 😄

Kibana server is not ready yet

之前在我的雲伺服器上安裝時,當 kibana 安裝啟動之後,一直報這個錯誤,最終發現是 elasticsearch 一直啟動不起來,看了看錯誤資訊,結果發現是 elasticsearch 所使用的 jvm 記憶體不夠了,嗯,1 核 2G 記憶體的主機,如果你也遇到這樣的問題,這個時候你可以修改 /etc/elasticsearch 路徑下的 jvm.options 文件,來調整 elasticsearch 的 jvm 虛擬機配置,之後重啟就可以了

至此,就完成了 elasticsearch 和 kibana 的安裝,後續也就可以基於 elasticsearch 來實現一些功能。另,對於許可權相關的管控以及如何基於實際的需求來實現一些功能,則在後面不定期的文章中進行體現

2.4、注意

公網直接開放 9200 埠、5601 埠很危險,請謹慎操作,謹慎操作!!!

Tags: