杜巧寶 李 玲
(安徽職業技術學院,安徽 合肥 230011)
關鍵字:Docker;Elasticsearch;Beat;Kibana;可視化
近幾年,隨著高校信息化發展不斷深入,智慧校園服務不斷豐富,校級數據中心規模越來越大,虛擬化服務器和業務服務的數量越來越多,學校對數據中心的運維管理工作也越來越重視。數據中心運維的基礎是對海量日志數據的分析,對數據處理的準確性和實時性要求逐漸變高。如果運維人員繼續通過編寫腳本,收集匯總日志進行集中化管理,將會導致查詢時間長,排障效率低[2]。那么就需要建立集中式日志收集分析系統,將服務器、網絡設備、安全設備等節點上的日志統一收集、管理、分析和可視化展示。通過可視化日志分析工具,可以及時發現隱患和故障,提高運維效率,為數據中心的安全、穩定運行提供保障。
隨著搜索技術和分析技術的發展和成熟,各種日志收集分析工具被廣泛使用。高校中由于運維成本和人員數量的限制,采用開源的、易用的、功能全面的Elastic Stack 作為日志收集分析工具。Elastic Stack 提供了一整套解決方案,包括日志的收集、傳輸、存儲、分析和可視化訪問。各個模塊之間互相配合,完美銜接,能夠提供高效的日志收集分析功能。本文以Docker 容器化技術為Elastic Stack 提供支撐,使用Docker Compose工具快速搭建分布式可視化運維平臺。
Docker是一個開源的應用容器引擎,開發者打包應用和依賴包到一個可移植的鏡像中,可以快速移植到主流的Linux 和Windows 機器上。容器是通過沙箱機制運行,相互之間不會有任何接口,提高了應用的安全和穩定性[3]。Docker 提供了Compose 工具,用于定義和運行多容器應用程序,可以實現一個命令快速創建并啟動多個服務。
Elastic Stack是一款開源數據收集處理存儲展示解決方案,是ELK Stack+Beats 的更新換代產品。該產品包括Elasticsearch、Logstash、Kibana和Beats,各個軟件直接相互配置,無縫銜接,如圖1 所示。Elasticsearch 是一個存儲、搜索和分析引擎。Logstash是服務器端數據處理管道,能夠同時從多個來源采集數據、轉換數據,然后將數據發送到Elasticsearch等“存儲庫”中。Beats是采用go語言開發的輕量級的數據采集工具,它可以采集不同類型的數據發送到Elasticsearch中,也可以將采集完的數據發送到Logstash上進行中轉,然后推送到Elasticsearch 中。Kibana 則可以讓用戶在Elasticsearch中使用圖形和圖表對數據進行可視化[4]。

圖1 Elastic Stack的組成
高校的業務系統大部分選擇架設在數據中心虛擬化服務器中,對虛擬化服務器系統健康指標和各項服務運行狀態的檢測是運維重點。根據學校數據中心資源情況,在數據中心中虛擬出一個8 核CPU、16G 內存和1T 存儲的Centos7.5虛擬機,作為可視化運維平臺運行服務器。為了充分使用虛擬機資源,采用Docker容器技術部署可視化運維平臺,利用Compose 工具提高部署效率。在Centos7.5 虛擬機中部署3個Elasticsearch容器組成存儲和分析集群,1個Elasticsearchhead容器為Elasticsearch集群提供可視化編輯處理工具,1個Kibana容器為Elasticsearch集群數據提供可視化展示平臺。
校內業務系統服務器中需要安裝配置Beats來采集系統健康指標數據和服務運行狀態數據。Beats提供了很多數據采集模板,包括系統健康指標、Nginx、Tomcat、Redis 等常用服務。通過Beats數據模板采集的數據可以直接傳輸給Elasticsearch 集群進行存儲分析。對于沒有模板的日志數據,也可以使用Beats 進行采集,數據先傳輸給Logstash 進行轉換處理,再裝載到Elasticsearch集群中進行存儲分析。
3.2.1 Docker的安裝
在Centos7.5 中可以使用yum 工具安裝Docker。由于在國內從DockerHUB上拉取鏡像很慢而且有時出現無法拉取現象,所以需要為Docker配置鏡像加速器。具體安裝方法如下:
(1)安裝一些必要的系統工具:sudo yum install-y yumutils device-mapper-persistent-data lvm2
(2)添加和更新軟件源信息:sudo yum-config-manager--add-repo http://mirrors.aliyun.com/docker-ce/linux/Centos/docker-ce.repo
sudo yum makecache fast
(3)安裝Docker:sudo yum-y install docker-ce
(4)配置鏡像加速器
國內很多云服務商和大學都提供了加速器服務,本文從穩定、成本和易用性角度考慮,選用阿里云的加速器。
1)在阿里云的容器鏡像服務中申請鏡像加速器地址。
2)在Centos 的/etc/docker/目錄中新建daemon.json 文件,在該文件中輸入配置代碼,如圖2所示。

圖2 鏡像加速器配置
3)重載配置文件和重新啟動Docker服務
sudo systemctl daemon-reload
sudo systemctl restart docker
(5)可以使用sudo docker version命令查看Docker版本號。若能正常顯示,即完成安裝。
3.2.2 Elastic Stack容器的部署
本文采用Docker Compose工具快速部署Elastic Stack集群容器。Compose 工具是用于定義和運行多容器Docker 應用程序的工具。在Compose 的YML 文件中配置Elastic Stack集群所需要的所有服務,一個命令就可以從YML 文件配置中創建并啟動所有服務。
(1)在/home/docker/compose/elk/目錄下創建conf、data和log三個目錄和docker-compose.yml配置文件。分別在data和log三個目錄下創建es01、es02、es03 目錄用于存放Elasticsearch 集群數據和日志文件,并為所有創建的目錄進行777 授權操作。在conf 中創建Kibana 的配置文件kibana.yml。
(2)在/home/docker/compose/elk/目錄下編輯dockercompose.yml 配置文件,services 中配置3 個node,1 個eshead和1個Kibana。分別為各服務配置鏡像名稱、容器名稱、基礎環境、數據卷、端口映射等參數。具體配置內容如圖3所示。

圖3 docker-compose.yml配置
(3)在/home/docker/compose/elk/conf 目錄下新建kibana.yml配置文件,需要配置Elasticsearch地址和端口號,用來連接Elasticsearch的master node,配置如圖4所示。

圖4 Kibana.yml配置
(4)配置完成后,在/home/docker/compose/elk/目錄下運行:sudo docker-compose up。運行完成后,在瀏覽器中輸入Centos 主機地址:端口號,測試Elasticsearch、Elasticsearchhead和Kibana是否安裝啟動成功,若能正常顯示說明已成功安裝。
3.2.3 數據采集
Beats 作為數據采集工具,集合了多種單一用途數據采集器。它們從成百上千或成千上萬臺機器和系統向Logstash 或Elasticsearch 發送數據。Beats中包括采集日志文件的Filebeat,采集系統運行健康指標數據的Metricbeat,采集網絡數據的Packetbeat,采集Windows事件日志的Winlogbeat等。
其中Metricbeat 可以獲取操作系統的CPU 和內存使用率、文件系統、磁盤IO 和網絡IO 等統計數據[1]。本文以Metricbeat工具為例,采集Centos系統和相關服務的運行健康指標數據直接傳輸裝載到Elasticsearch中。在應用服務中具體安裝采集過程如下:
(1)在/home/beat/目錄下運行以下命令下載Metricbeat工具:
curl-L-O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.10.2-linux-x86_64.tar.gz
(2)解壓到當前目錄
tar xzvf metricbeat-7.10.2-linux-x86_64.tar.gz
(3)編輯metricbeat-7.10.2-linux-x86_64 目錄下的metricbeat.yml 配置文件,設置output、Kibana 和Dashboards 三個模塊中的相關配置。
(4)在metricbeat-7.10.2-linux-x86_64/modules.d 目錄下選擇Elastic Stack 提供的數據采集模板,重命名需要的采集模板,去除文件名后面的.disabled即可激活使用。本文選用system和tomcat采集模板,如圖5所示。

圖5 數據采集模板激活配置
(5)為配置文件授予root 權限:sudo chown root metricbeat.yml;sudo chown root modules.d/system.yml;sudo chown root modules.d/tomcat.yml。
(6)運行Metricbeat采集數據:sudo./metricbeat–e。
(7)在Elasticsearch-head 中連接Elasticsearch,可以看到Metricbeat 索引中有數據傳入,說明已成功完成部署,如圖6所示。

圖6 Elasticsearch列表
3.2.4 數據可視化
Elasticsearch 是Elastic Stack 的核心,它是通過有限狀態轉換器實現用于全文檢索的倒排索引,實現用于存儲數值數據和地理位置數據的BKD 樹,以及用于分析的列存儲。由于每個數據都被編入了索引,開發者可以快速使用和訪問所有數據。Elasticsearch 對外提供的是索引的概念,相當于Mysql 的數據庫。用戶查詢是在索引上完成,每個索引由若干個分片組成,以此來達到分布式可擴展的能力。
Elastic Stack提供了Kibana可視化工具,可以為Logstash和Elasticsearch匯總、分析和搜索重要數據日志,同時提供日志分析可視化展示。Metricbeat將系統指標數據和業務運行狀態數據傳輸給Elasticsearch 進行存儲,Kibana 即可從Elasticsearch中查詢數據進行可視化展示。
在瀏覽器中輸入Centos 主機地址加Kibana 端口號5601,即可訪問可視化頁面。選擇左側工具欄中的Dashboard,打開可視化儀表盤頁面。在搜索框中搜索Metricbeat system,選擇下拉選項中的[Metricbeat System] Host overview ECS,即可看到業務系統運行健康指標可視化頁面。通過設置刷新頻率即可實時圖形化觀察服務器運行情況,如圖7所示。

圖7 可視化運維平臺
數據中心支撐各信息系統運行,服務于學校教學、科研、管理各個方面,需要各項服務具有強連續性和高穩定性。本文介紹的可視化運維平臺相對于傳統的運維方式,部署方便、功能強大,擴展簡便、實用性強。通過圖形化儀表盤可以快速發現系統運行問題,提前制作和完成相關解決方案。改變傳統運維方式,變被動為主動,極大提高了系統的連續性和穩定性。今后數據中心新增各項應用服務時,只需在對應的系統中增加Beats 模塊,即可通過“熱插拔式”快速加入Elastic Stack可視化運維平臺中。