上篇文章寫了一下消息運(yùn)維管理平臺(tái),今天帶來(lái)的是ES的監(jiān)控和運(yùn)維平臺(tái)。目前初創(chuàng)企業(yè),不像大型互聯(lián)網(wǎng)公司,可以重復(fù)的造輪子。前期還是快速迭代試錯(cuò)階段,方便拿到市場(chǎng)反饋,及時(shí)調(diào)整自己的戰(zhàn)略和產(chǎn)品方向。讓自己活下去,話不多說(shuō) 開(kāi)始今天的分享。
一、項(xiàng)目介紹
KnowSearch 是基于滴滴內(nèi)部開(kāi)發(fā)的的一套 ES 搜索平臺(tái)(內(nèi)部代號(hào) Arius )優(yōu)化開(kāi)源而來(lái),它是滴滴搜索團(tuán)隊(duì)的一整套 ES 搜索服務(wù)和治理體系化思考的全面展現(xiàn)。
內(nèi)部使用情況:
目前滴滴內(nèi)部 ES 集群的規(guī)模在60+ 集群,2500+ 節(jié)點(diǎn),10PB 的數(shù)據(jù),1500w 寫入 TPS, 10w+ 查詢 QPS。
KnowSearch提供了一套體驗(yàn)環(huán)境,地址如下:
體驗(yàn)地址:http://116.85.24.226/
賬號(hào)密碼:admin/admin
二、項(xiàng)目特點(diǎn)
企業(yè)級(jí)權(quán)限管控
離線索引快速導(dǎo)入
跨集群復(fù)制
索引模板服務(wù)
DSL審核與分析
三、優(yōu)勢(shì)
平臺(tái)側(cè)服務(wù)易用性提升:提供功能強(qiáng)大和易用的用戶控制臺(tái),提供索引、集群、mapping 等常用操作,降低用戶使用 ElasticSearch 的成本。
管控側(cè)運(yùn)維成本降低:提供功能強(qiáng)大和易用的管控平臺(tái),開(kāi)發(fā)和運(yùn)維可以方便的操作集群管控、索引管控、權(quán)限管控,降低服務(wù)運(yùn)維成本;提供全面和豐富的監(jiān)控指標(biāo),方便開(kāi)發(fā)和運(yùn)維快速掌握集群的運(yùn)行時(shí)狀態(tài)。
引擎?zhèn)纫婺芰μ嵘荷钊胍娑ㄖ崎_(kāi)發(fā)跨集群數(shù)據(jù)復(fù)制、FastIndex 離線索引創(chuàng)建等特性,提升 ElasticSearch 集群穩(wěn)定性和性能。
四、項(xiàng)目編譯 & 打包
KnowSearch 采用前后端分離架構(gòu),前端工程包括arius-console,后端工程包括arius-admin(管控服務(wù))、arius-gateway(網(wǎng)關(guān)服務(wù))
前端工程編譯和運(yùn)行
clone 項(xiàng)目到本地,使用idea單獨(dú)打開(kāi)arius-console工程后
環(huán)境要求:
Modern browsers and Internet Explorer 11
node V10+
安裝npm:
npm install
運(yùn)行:
npm run start
訪問(wèn):
http://localhost:8002/es
后端工程編譯和運(yùn)行
clone 項(xiàng)目到本地,使用idea分別單獨(dú)打開(kāi)arius-admin工程和arius-gateway工程;
arius-admin
arius-admin-v2由10個(gè)主要的工程和擴(kuò)展增值服務(wù)組成:
arius-admin-rest 表現(xiàn)層1,可以直接封裝Manager接口暴露成restful接口 arius-admin-task 表現(xiàn)層2,提供auv-job定時(shí)調(diào)度任務(wù)入口, 任務(wù)實(shí)現(xiàn)在arius-admin-biz/arius-admin-core中 arius-admin-common 基礎(chǔ)組件層1,存放業(yè)務(wù)需要數(shù)據(jù)結(jié)構(gòu), 如Java POJO(entity、po)、公共工具方法、事件等 arius-admin-client 基礎(chǔ)組件層2,存放業(yè)務(wù)需要的POJO(vo、dto)、枚舉等, 并且提供客戶端請(qǐng)求響應(yīng)的數(shù)據(jù)實(shí)體。arius-admin-biz 業(yè)務(wù)層1,負(fù)責(zé)對(duì)arius-admin-core中各種的業(yè)務(wù)邏輯進(jìn)行聚合處理,提供表現(xiàn)層所需要的數(shù)據(jù)實(shí)體 arius-admin-extend 業(yè)務(wù)層2,擴(kuò)展服務(wù), 如容量規(guī)劃、fast-index等 arius-admin-core 核心層1,提供核心的管控能力, 主要的業(yè)務(wù)邏輯實(shí)現(xiàn), 如集群、索引、項(xiàng)目等 arius-admin-metadata 核心層2,負(fù)責(zé)對(duì)Elasticsearch的元數(shù)據(jù)采集,如索引指標(biāo)統(tǒng)計(jì)、節(jié)點(diǎn)指標(biāo)統(tǒng)計(jì), 提供的能力包括但不限于DSL分析、健康檢查等 arius-admin-persistence 數(shù)據(jù)層1,負(fù)責(zé)對(duì)MySQL和Elasticsearch中的數(shù)據(jù)進(jìn)行操作 arius-admin-remote 數(shù)據(jù)層2,獲取第三方服務(wù)數(shù)據(jù), 如訪問(wèn)文件存儲(chǔ)系統(tǒng)、企業(yè)部門系統(tǒng)等
可以單獨(dú)部署,也可以結(jié)合arius-gateway部署。根據(jù)自己需要,自行選擇。
配置
配置環(huán)境文件:application-xxx.properties
更新ES數(shù)據(jù)集群名稱
es.update.cluster.name: {name}es.client.cluster.port: {port}
網(wǎng)關(guān)配置
es.gateway.url: {host}es.gateway.port: {port}es.appid: {appId1},{appId2},{appId3}es.password: {passwd},{passwd},{passwd}
數(shù)據(jù)源配置
datasource: name: data type: com.alibaba.druid.pool.DruidDataSource druid: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://{host}:{port}/{dbName}?useUnicode=true&characterEncoding=utf8&jdbcCompliantTruncation=true&allowMultiQueries=true&useSSL=false username: {username} password: {password}auv-job: jdbc-url: jdbc:mysql://{host}:{port}/{dbName}?useUnicode=true&characterEncoding=utf8&jdbcCompliantTruncation=true&allowMultiQueries=true&useSSL=false username: {username} password: {password}
b.打包
mvn clean package -Dmaven.test.skip=true
c.運(yùn)行
java -jar arius-admin-rest.jar --spring.profiles.active=xxx (test、dev)
arius-gateway
工程模塊劃分:
arius-gateway-common 存放公共常量, 公用方法, 異常類, 普通java bean等.arius-gateway-core 提供核心方法, 主要業(yè)務(wù)邏輯實(shí)現(xiàn).arius-gateway-remote 依賴第三方的接口.arius-gateway-rest 提供rest和Tcp方式接口.arius-gateway-task 執(zhí)行程序定時(shí)任務(wù).
arius-gateway-v2 作為網(wǎng)關(guān)層,需配合 arius-admin-v2 使用。
配置
配置環(huán)境文件:application-xxx.propertiesarius.gateway.adminUrl=arius.gateway.adminUrl=http://{host}:{port}/admin/api
b.打包
mvn clean package -Dmaven.test.skip=true
c.運(yùn)行
java -jar arius-gateway-rest-0.0.1-SNAPSHOT.jar --spring.profiles.active=test
五、項(xiàng)目部署
官方提供了多種部署方式:?jiǎn)螜C(jī)部署、腳本部署、容器部署、手動(dòng)部署等,限于篇幅,這里就不展示每種部署方式都介紹。這里只介紹其中一種方式:手動(dòng)部署。
其他方式請(qǐng)參考github自行進(jìn)行查看。
手動(dòng)部署
安裝順序如下
安裝 JDK-11、MySQL、ElasticSearch 等依賴服務(wù)
安裝 KnowStreaming
安裝 MySQL 服務(wù)
yum 方式安裝
# 配置yum源wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpmrpm -ivh mysql57-community-release-el7-9.noarch.rpm# 執(zhí)行安裝yum -y install mysql-server mysql-client# 服務(wù)啟動(dòng)systemctl start mysqld# 獲取初始密碼并修改old_pass=`grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}' | tail -n 1`mysql -NBe "alter user USER() identified by 'Didi_km_678';"--connect-expired-password -uroot -p$old_pass
配置 JDK 環(huán)境
# 下載安裝包wget https://s3-gzpu.didistatic.com/pub/jdk11.tar.gz# 解壓到指定目錄tar -zxf jdk11.tar.gz -C /usr/local/# 更改目錄名mv /usr/local/jdk-11.0.2 /usr/local/java11# 添加到環(huán)境變量echo"export JAVA_HOME=/usr/local/java11" >> ~/.bashrcecho"export CLASSPATH=/usr/java/java11/lib" >> ~/.bashrcecho"export PATH=$JAVA_HOME/bin:$PATH:$HOME/bin" >> ~/.bashrcsource ~/.bashrc
ElasticSearch 實(shí)例搭建
ElasticSearch 用于存儲(chǔ)平臺(tái)采集的 Kafka 指標(biāo);
以下安裝示例為單節(jié)點(diǎn)模式
# 下載安裝包wgethttps://s3-gzpu.didistatic.com/pub/elasticsearch.tar.gz# 創(chuàng)建ES數(shù)據(jù)存儲(chǔ)目錄mkdir-p /data/es_data# 創(chuàng)建ES所屬用戶useraddarius# 配置用戶的打開(kāi)文件數(shù)echo"arius soft nofile 655350" >> /etc/security/limits.confecho"arius hard nofile 655350" >> /etc/security/limits.confecho"vm.max_map_count = 655360" >> /etc/sysctl.confsysctl-p# 解壓安裝包tar-zxf elasticsearch.tar.gz -C /data/# 更改目錄所屬組chown-R arius:arius /data/# 修改配置文件(參考以下配置)vim/data/elasticsearch/config/elasticsearch.ymlcluster.name: km_esnode.name: es-node1node.master: truenode.data: truepath.data: /data/es_datahttp.port: 8060discovery.seed_hosts: ["127.0.0.1:9300"]# 修改內(nèi)存配置vim/data/elasticsearch/config/jvm.options-Xms2g-Xmx2g# 啟動(dòng)服務(wù)su- ariusexportJAVA_HOME=/usr/local/java11sh/data/elasticsearch/control.sh start# 確認(rèn)狀態(tài)sh/data/elasticsearch/control.sh status
KnowStreaming 實(shí)例搭建
# 下載安裝包wgethttps://s3-gzpu.didistatic.com/pub/knowstreaming/KnowStreaming-3.0.0-beta.1.tar.gz# 解壓安裝包到指定目錄tar-zxf KnowStreaming-3.0.0-beta.1.tar.gz -C /data/# 修改啟動(dòng)腳本并加入systemd管理cd/data/KnowStreaming/# 創(chuàng)建相應(yīng)的庫(kù)和導(dǎo)入初始化數(shù)據(jù)mysql-uroot -pDidi_km_678 -e "create database know_streaming;"mysql-uroot -pDidi_km_678 know_streaming < ./init/sql/ddl-ks-km.sqlmysql-uroot -pDidi_km_678 know_streaming < ./init/sql/ddl-logi-job.sqlmysql-uroot -pDidi_km_678 know_streaming < ./init/sql/ddl-logi-security.sqlmysql-uroot -pDidi_km_678 know_streaming < ./init/sql/dml-ks-km.sqlmysql-uroot -pDidi_km_678 know_streaming < ./init/sql/dml-logi.sql# 創(chuàng)建elasticsearch初始化數(shù)據(jù)sh./bin/init_es_template.sh# 修改配置文件vim./conf/application.yml# 監(jiān)聽(tīng)端口server:port: 8080 # web 服務(wù)端口tomcat:accept-count: 1000max-connections: 10000# ES地址es.client.address: 127.0.0.1:8060# 數(shù)據(jù)庫(kù)配置(一共三處地方,修改正確的mysql地址和數(shù)據(jù)庫(kù)名稱以及用戶名密碼)jdbc-url: jdbc:mariadb://127.0.0.1:3306/know_streaming?.....username: rootpassword: Didi_km_678# 啟動(dòng)服務(wù)cd/data/KnowStreaming/bin/shstartup.sh
六、項(xiàng)目效果圖
登錄界面:

首頁(yè):

集群管理:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-496760.html

模板管理:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-496760.html

到了這里,關(guān)于一站式 Elasticsearch 集群指標(biāo)監(jiān)控與運(yùn)維管控平臺(tái)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!