当前位置: 首页 > news >正文

一站式 Elasticsearch 集群指标监控与运维管控平台

上篇文章写了一下消息运维管理平台,今天带来的是ES的监控和运维平台。目前初创企业,不像大型互联网公司,可以重复的造轮子。前期还是快速迭代试错阶段,方便拿到市场反馈,及时调整自己的战略和产品方向。让自己活下去,话不多说 开始今天的分享。

一、项目介绍

KnowSearch 是基于滴滴内部开发的的一套 ES 搜索平台(内部代号 Arius )优化开源而来,它是滴滴搜索团队的一整套 ES 搜索服务和治理体系化思考的全面展现。

内部使用情况:
目前滴滴内部 ES 集群的规模在60+ 集群,2500+ 节点,10PB 的数据,1500w 写入 TPS, 10w+ 查询 QPS。

KnowSearch提供了一套体验环境,地址如下:

  • 体验地址:http://116.85.24.226/

  • 账号密码: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

访问:

http://localhost:8002/es


后端工程编译和运行

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部署。根据自己需要,自行选择。

  1. 配置

配置环境文件: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 使用。

  1. 配置

配置环境文件: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自行进行查看。

  • 手动部署

安装顺序如下

  1. 安装 JDK-11、MySQL、ElasticSearch 等依赖服务

  1. 安装 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

六、项目效果图

登录界面:

首页:

集群管理:

模板管理:

相关文章:

一站式 Elasticsearch 集群指标监控与运维管控平台

上篇文章写了一下消息运维管理平台&#xff0c;今天带来的是ES的监控和运维平台。目前初创企业&#xff0c;不像大型互联网公司&#xff0c;可以重复的造轮子。前期还是快速迭代试错阶段&#xff0c;方便拿到市场反馈&#xff0c;及时调整自己的战略和产品方向。让自己活下去&a…...

C# 调用Python

一、简介 IronPython 是一种在 NET 和 Mono 上实现的 Python 语言&#xff0c;由 Jim Hugunin&#xff08;同时也是 Jython 创造者&#xff09;所创造。 Python是一种跨平台的计算机程序设计语言。 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python是…...

51单片机最强模块化封装(3)

文章目录 前言一、创建smg文件,添加smg文件路径二、smg文件编写三、模块化测试总结前言 本篇文章将带大家继续封装我们的代码。 这里我们会封装数码管的操作函数。 一、创建smg文件,添加smg文件路径 这里的操作就不过多解释了,大家自行看前面的文章即可。 51单片机模块化…...

【CSS 布局】水平垂直居中

CSS 布局-水平垂直居中 一、水平居中 创建一个父盒子&#xff0c;和子盒子 <div class"parent"><div class"child"></div> </div>基本样式如下 .parent {background-color: #fff; }.child {background-color: #999;width: 100p…...

【C++】类和对象--类的6个默认成员函数

目录1.类的6个默认成员函数2.构造函数2.1概念2.2特性3.析构函数3.1概念3.2特性4.拷贝构造函数4.1概念4.2特征5.赋值运算符重载5.1运算符重载5.2赋值运算符重载5.3前置和后置重载5.4流插入和流提取运算符重载6.const成员7.取地址重载和const取地址操作符重载1.类的6个默认成员函…...

常见面试题---------如何处理MQ消息丢失的问题?

如何处理MQ消息丢失的问题? RabbitMQ丢失消息分为如下几种情况&#xff1a; 生产者丢消息&#xff1a; 生产者将数据发送到RabbitMQ的时候&#xff0c;可能在传输过程中因为网络等问题而将数据弄丢了。 RabbitMQ自己丢消息&#xff1a; 如果没有开启RabbitMQ的持久化&#x…...

十四、Linux网络:高级IO

目录 五种IO模型 同步IO 阻塞IO 非阻塞IO 信号驱动IO IO多路转接 异步IO...

带你走进API安全的知识海洋

Part1什么是API API&#xff08;Application Programming Interface&#xff0c;应用程序接口&#xff09;是一些预先定义的接口&#xff08;如函数、HTTP接口&#xff09;&#xff0c;或指软件系统不同组成部分衔接的约定。用来提供应用程序与开发人员基于某软件或硬件得以访…...

【Java】TCP的三次握手和四次挥手

三次握手 TCP三次握手是一个经典的面试题&#xff0c;它指的是TCP在传递数据之前需要进行三次交互才能正式建立连接&#xff0c;并进行数据传递。&#xff08;客户端主动发起的&#xff09;TCP之所以需要三次握手是因为TCP双方都是全双工的。 什么是全双工&#xff1f; TCP任何…...

JUC并发编程

1.什么是JUC java.util工具包、包、分类 业务&#xff1a;普通业务线程代码 Thread Runable: 没有返回值、效率相比Callable相对较低。 2.线程和进程 进程&#xff1a;一个程序&#xff0c;QQ.exe Music.exe 程序的集合 一个进程往往可以包含多个线程&#xff0c;至少包含一个…...

概率统计·假设检验【正态总体均值的假设检验、正态总体方差的假设检验】

均值假设检验定义 2类错误 第1类错误&#xff08;弃真&#xff09;&#xff1a;当原假设H0为真&#xff0c;观察值却落入拒绝域&#xff0c;因而拒 绝H0这类错误是“以真为假” 犯第一类错误的概率显著性水平α第2类错误&#xff08;取伪&#xff09;&#xff1a;当原假设H0不…...

如何预测机组设备健康状态?你可能需要这套解决方案

1. 应用场景随机振动[注1]会发生在工业物联网的各个场景中&#xff0c;包括产线机组设备的运行、运输设备的移动、试验仪器的运行等等。通过分析采集到的振动信号可以预估设备的疲劳年限、及时知晓设备已发生的异常以及预测未来仪器可能发生的异常等等。本篇教程会提供给有该方…...

C++类和对象:面向对象编程的核心。| 面向对象还编什么程啊,活该你是单身狗。

&#x1f451;专栏内容&#xff1a;C学习笔记⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;日拱一卒&#xff0c;功不唐捐 文章目录一、前言二、面向对象编程三、类和对象1、类的引入2、类的定义Ⅰ、声明和定义在一起Ⅱ、声明和定义分开Ⅲ、成员变量命…...

CUDA虚拟内存管理

CUDA中的虚拟内存管理 文章目录CUDA中的虚拟内存管理1. Introduction2. Query for support3. Allocating Physical Memory3.1. Shareable Memory Allocations3.2. Memory Type3.2.1. Compressible Memory4. Reserving a Virtual Address Range5. Virtual Aliasing Support6. Ma…...

线程池小结

什么是线程池 线程池其实就是一种多线程处理形式&#xff0c;处理过程中可以将任务添加到队列中&#xff0c;然后在创建线程后自动启动这些任务。这里的线程就是我们前面学过的线程,这里的任务就是我们前面学过的实现了Runnable或Callable接口的实例对象; 为什么使用线程池 …...

vue3状态管理模式 Pinia

状态管理库 Pinia是Vue的专属状态管理库&#xff0c;它允许你跨组件或页面共享状态 1&#xff1a;安装与使用pinia 1.1 安装语法&#xff1a;npm install pinia1.2 创建一个pinia&#xff08;根存储&#xff09;并将其传递给应用程序 import { createApp } from vue import…...

python基于django的自媒体社区交流平台

自媒体社区平台采用python技术,基于django框架,mysql数据库进行开发,实现了以下功能&#xff1a; 本系统主要包括管理员,用户,商家和普通管理员四个角色组成,主要包括以下功能&#xff1a; 1;前台&#xff1a;首页、需求通告、优质案例、帮助中心、意见反馈、个人中心、后台管理…...

Python中类和对象(2)

1.继承 Python 的类是支持继承的&#xff1a;它可以使用现有类的所有功能&#xff0c;并在无需重新编写代码的情况下对这些功能进行扩展。 通过继承创建的新类称为 “子类”&#xff0c;被继承的类称为 “父类”、“基类” 或 “超类”。 继承语法是将父类写在子类类名后面的…...

SpringMvc入门

Spring与Web环境的集成 1.ApplicationContext应用上下文的获取方式 分析 之前获取应用上下文对象每次都是从容器中获取&#xff0c;编写时都需要new ClasspathXmlApplicationContext(Spring配置文件)&#xff0c;这样的弊端就是配置加载多次应用上下文就创建多次。 在Web项目…...

设计模式之单例模式(C++)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 一、单例模式是什么&#xff1f; 单例模式是一种创建型的软件设计模式&#xff0c;在工程项目中非常常见。通过单例模式的设计&am…...

贪心算法(基础)

目录 一、什么是贪心&#xff1f; &#xff08;一&#xff09;以教室调度问题为例 1. 问题 2. 具体做法如下 3. 因此将在这间教室上如下三堂课 4. 结论 &#xff08;二&#xff09;贪心算法介绍 1. 贪心算法一般解题步骤 二、最优装载问题 &#xff08;一&#xf…...

【九宫格坐标排列 Objective-C语言】

一、这个案例做好之后的效果如图: 1.这个下载是可以点击的,当你点击之后,弹出一个框,过一会儿,框框自动消失,这里变成“已安装” 2.那么,我现在先问大家一句话:大家认为在这一个应用里面,它包含几个控件, 3个,哪3个:一个是图片框,一个是Label,一个是按钮, 这…...

Tomcat简介

目录 一、Tomcat简介 二、下载安装Tomcat 三、利用Tomcat部署静态页面 一、Tomcat简介 Tomcat是一个HTTP服务器&#xff0c;可以按照HTTP的格式来解析请求来调用用户指定的相关代码然后按照HTTP的格式来构造返回数据。 二、下载安装Tomcat 进入Tomcat官网选择与自己电脑…...

Python基础及函数解读(深度学习)

一、语句1.加注释单行注释&#xff1a;&#xff08;1&#xff09;在代码上面加注释&#xff1a; # 后面跟一个空格&#xff08;2&#xff09;在代码后面加注释&#xff1a;和代码相距两个空格&#xff0c; # 后面再跟一个空格多行注释&#xff1a;按住shift 点击三次"&am…...

车道线检测-PolyLaneNet 论文学习笔记

论文&#xff1a;《PolyLaneNet: Lane Estimation via Deep Polynomial Regression》代码&#xff1a;https://github.com/lucastabelini/PolyLaneNet地址&#xff1a;https://arxiv.org/pdf/2004.10924.pdf参考&#xff1a;https://blog.csdn.net/sinat_17456165/article/deta…...

GO——接口(下)

接口接口值警告&#xff1a;一个包含空指针值的接口不是nil接口sort.Interface接口http.Handler接口类型断言类型分支接口值 接口值&#xff0c;由两个部分组成&#xff0c;一个具体的类型和那个类型的值。它们被称为接口的动态类型和动态值。对于像Go语言这种静态类型的语言&…...

计算机网络之http02| HTTPS HTTP1.1的优化

post与get请求的区别 get 是获取资源&#xff0c;Post是向指定URI提交资源&#xff0c;相关信息放在body里 2.http有哪些优点 &#xff08;1&#xff09;简单 报文只有报文首部和报文主体&#xff0c;易于理解 &#xff08;2&#xff09;灵活易拓展 URI相应码、首部字段都没有…...

基于matlab使用神经网络清除海杂波

一、前言此示例演示如何使用深度学习工具箱™训练和评估卷积神经网络&#xff0c;以消除海上雷达 PPI 图像中的杂波返回。深度学习工具箱提供了一个框架&#xff0c;用于设计和实现具有算法、预训练模型和应用程序的深度神经网络。二、数据集该数据集包含 84 对合成雷达图像。每…...

每天10个前端小知识 【Day 8】

前端面试基础知识题 1. Javascript中如何实现函数缓存&#xff1f;函数缓存有哪些应用场景&#xff1f; 函数缓存&#xff0c;就是将函数运算过的结果进行缓存。本质上就是用空间&#xff08;缓存存储&#xff09;换时间&#xff08;计算过程&#xff09;&#xff0c; 常用于…...

【项目精选】基于Java的敬老院管理系统的设计和实现

本系统主要是针对敬老院工作人员即管理员和员工设计的。敬老院管理系统 将IT技术为养老院提供一个接口便于管理信息,存储老人个人信息和其他信息,查找 和更新信息的养老院档案,节省了员工的劳动时间,大大降低了成本。 其主要功能包括&#xff1a; 系统管理员用户功能介绍&#…...

wordpress中文连接/赣州网站建设

本文转载自知乎《Pandas | 一文看懂透视表pivot_table》&#xff0c;在原文基础上略有增删改。感谢原作者非常生动的例子。 目录 一、概述 1.1 什么是透视表&#xff1f; 1.2 为什么要使用pivot_table&#xff1f; 二、如何使用pivot_table 2.1 读取数据 2.2 Index 2.3 …...

网站制作的收费/优化seo教程技术

操作PDF文档时&#xff0c;打印是常见的需求之一。针对不同的打印需求&#xff0c;可分多种情况来进行&#xff0c;如设置静默打印、指定打印页码范围和打印纸张大小、双面打印、黑白打印等等。经过测试&#xff0c;下面将对常见的几种PDF打印需求做一些归纳总结&#xff0c;这…...

网站副标题怎么修改/2021百度最新收录方法

补充&#xff1a;软件开发规范&#xff0c;bin,conf,core,db,lib,log 内置函数补充&#xff1a;isinstance&#xff08;obj&#xff0c;Foo&#xff09; 判断obj是否是Foo的对象 issubclass&#xff08;a,b&#xff09; 判断a是否是b的子类 一、反射 1、概念&#xff1a; &…...

南阳企业网站建设/什么是网站推广?

一、基本思想&#xff1a; 通过一趟排序将要排序的数据分割成独立的两部分&#xff0c;其中一部分的所有数据都比另外一部分的所有数据都要小&#xff0c; 然后再按此方法对这两部分数据分别进行快速排序&#xff0c;整个排序过程可以递归进行&#xff0c;以此达到整个数据变…...

人工智能公司网站建设/网络宣传

本文是摘自别人的网站&#xff0c;自己读的书少&#xff0c;谨以此作为自己要读的书的一个书目列表吧。 原文地址&#xff1a;http://blog.sina.com.cn/s/blog_6aa1784101011hl5.html 正文&#xff1a; 一直有这么个想法&#xff0c;列一下我个人认为在学习和使用Java过程中可以…...

天津做网站选择津坤科技b/互联网营销培训平台

前言 前几天, 看 R大 的一篇文章的时候, 发现了一篇有趣的文章 : https://rednaxelafx.iteye.com/blog/850082 关于这篇文章的重点 反序列化 来创建对象的细节, 我也还是想了解了解 我之前以为的就是 序列化就是 先把对象的相关元数据 以及 相关的需要存储的数据信息 序列华…...