上篇文章写了一下消息运维管理平台,今天带来的是ES的监控和运维平台。目前初创企业,不像大型互联网公司,可以重复的造轮子。前期还是快速迭代试错阶段,方便拿到市场反馈,及时调整自己的战略和产品方向。让自己活下去,话不多说 开始今天的分享。
一、项目介绍
KnowSearch 是基于滴滴内部开发的的一套 ES 搜索平台(内部代号 Arius )优化开源而来,它是滴滴搜索团队的一整套 ES 搜索服务和治理体系化思考的全面展现。
内部使用情况:
目前滴滴内部 ES 集群的规模在60+ 集群,2500+ 节点,10PB 的数据,1500w 写入 TPS, 10w+ 查询 QPS。
KnowSearch提供了一套体验环境,地址如下:
账号密码:admin/admin
二、项目特点
企业级权限管控
离线索引快速导入
跨集群复制
索引模板服务
DSL审核与分析
三、优势
平台侧服务易用性提升:提供功能强大和易用的用户控制台,提供索引、集群、mapping 等常用操作,降低用户使用 ElasticSearch 的成本。
管控侧运维成本降低:提供功能强大和易用的管控平台,开发和运维可以方便的操作集群管控、索引管控、权限管控,降低服务运维成本;提供全面和丰富的监控指标,方便开发和运维快速掌握集群的运行时状态。
引擎侧引擎能力提升:深入引擎定制开发跨集群数据复制、FastIndex 离线索引创建等特性,提升 ElasticSearch 集群稳定性和性能。
四、项目编译 & 打包
KnowSearch 采用前后端分离架构,前端工程包括arius-console,后端工程包括arius-admin(管控服务)、arius-gateway(网关服务)
前端工程编译和运行
clone 项目到本地,使用idea单独打开arius-console工程后
环境要求:
Modern browsers and Internet Explorer 11
node V10+
安装npm:
npm install
运行:
npm run start
访问:
后端工程编译和运行
clone 项目到本地,使用idea分别单独打开arius-admin工程和arius-gateway工程;
arius-admin
arius-admin-v2由10个主要的工程和扩展增值服务组成:
arius-admin-rest 表现层1,可以直接封装Manager接口暴露成restful接口 arius-admin-task 表现层2,提供auv-job定时调度任务入口, 任务实现在arius-admin-biz/arius-admin-core中 arius-admin-common 基础组件层1,存放业务需要数据结构, 如Java POJO(entity、po)、公共工具方法、事件等 arius-admin-client 基础组件层2,存放业务需要的POJO(vo、dto)、枚举等, 并且提供客户端请求响应的数据实体。arius-admin-biz 业务层1,负责对arius-admin-core中各种的业务逻辑进行聚合处理,提供表现层所需要的数据实体 arius-admin-extend 业务层2,扩展服务, 如容量规划、fast-index等 arius-admin-core 核心层1,提供核心的管控能力, 主要的业务逻辑实现, 如集群、索引、项目等 arius-admin-metadata 核心层2,负责对Elasticsearch的元数据采集,如索引指标统计、节点指标统计, 提供的能力包括但不限于DSL分析、健康检查等 arius-admin-persistence 数据层1,负责对MySQL和Elasticsearch中的数据进行操作 arius-admin-remote 数据层2,获取第三方服务数据, 如访问文件存储系统、企业部门系统等
可以单独部署,也可以结合arius-gateway部署。根据自己需要,自行选择。
配置
配置环境文件:application-xxx.properties
更新ES数据集群名称
es.update.cluster.name: {name}es.client.cluster.port: {port}
网关配置
es.gateway.url: {host}es.gateway.port: {port}es.appid: {appId1},{appId2},{appId3}es.password: {passwd},{passwd},{passwd}
数据源配置
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.运行
java -jar arius-admin-rest.jar --spring.profiles.active=xxx (test、dev)
arius-gateway
工程模块划分:
arius-gateway-common 存放公共常量, 公用方法, 异常类, 普通java bean等.arius-gateway-core 提供核心方法, 主要业务逻辑实现.arius-gateway-remote 依赖第三方的接口.arius-gateway-rest 提供rest和Tcp方式接口.arius-gateway-task 执行程序定时任务.
arius-gateway-v2 作为网关层,需配合 arius-admin-v2 使用。
配置
配置环境文件:application-xxx.propertiesarius.gateway.adminUrl=arius.gateway.adminUrl=http://{host}:{port}/admin/api
b.打包
mvn clean package -Dmaven.test.skip=true
c.运行
java -jar arius-gateway-rest-0.0.1-SNAPSHOT.jar --spring.profiles.active=test
五、项目部署
官方提供了多种部署方式:单机部署、脚本部署、容器部署、手动部署等,限于篇幅,这里就不展示每种部署方式都介绍。这里只介绍其中一种方式:手动部署。
其他方式请参考github自行进行查看。
手动部署
安装顺序如下
安装 JDK-11、MySQL、ElasticSearch 等依赖服务
安装 KnowStreaming
安装 MySQL 服务
yum 方式安装
# 配置yum源wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpmrpm -ivh mysql57-community-release-el7-9.noarch.rpm# 执行安装yum -y install mysql-server mysql-client# 服务启动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 环境
# 下载安装包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# 添加到环境变量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 实例搭建
ElasticSearch 用于存储平台采集的 Kafka 指标;
以下安装示例为单节点模式
# 下载安装包wgethttps://s3-gzpu.didistatic.com/pub/elasticsearch.tar.gz# 创建ES数据存储目录mkdir-p /data/es_data# 创建ES所属用户useraddarius# 配置用户的打开文件数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"]# 修改内存配置vim/data/elasticsearch/config/jvm.options-Xms2g-Xmx2g# 启动服务su- ariusexportJAVA_HOME=/usr/local/java11sh/data/elasticsearch/control.sh start# 确认状态sh/data/elasticsearch/control.sh status
KnowStreaming 实例搭建
# 下载安装包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/# 修改启动脚本并加入systemd管理cd/data/KnowStreaming/# 创建相应的库和导入初始化数据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# 创建elasticsearch初始化数据sh./bin/init_es_template.sh# 修改配置文件vim./conf/application.yml# 监听端口server:port: 8080 # web 服务端口tomcat:accept-count: 1000max-connections: 10000# ES地址es.client.address: 127.0.0.1:8060# 数据库配置(一共三处地方,修改正确的mysql地址和数据库名称以及用户名密码)jdbc-url: jdbc:mariadb://127.0.0.1:3306/know_streaming?.....username: rootpassword: Didi_km_678# 启动服务cd/data/KnowStreaming/bin/shstartup.sh
六、项目效果图
登录界面:
首页:
集群管理:
模板管理: