手摸手 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
啟動之後,可以在伺服器上通過 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
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 是對 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 之後,如果你立刻通過瀏覽器訪問可能會提示下面的內容,嗯,請坐和放寬,等一會,多刷新幾次就可以了,如果一直出現下面這個提示,可通過 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 埠很危險,請謹慎操作,謹慎操作!!!