当前位置: 首页 > 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…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用&#xff0c;用户可以通过网页界面上传黑白视频&#xff0c;系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观&#xff0c;不需要了解技术细节。 效果图 ​二、实现思路 总体思路&#xff1a; 用户通过Gradio界面上…...

CSS3相关知识点

CSS3相关知识点 CSS3私有前缀私有前缀私有前缀存在的意义常见浏览器的私有前缀 CSS3基本语法CSS3 新增长度单位CSS3 新增颜色设置方式CSS3 新增选择器CSS3 新增盒模型相关属性box-sizing 怪异盒模型resize调整盒子大小box-shadow 盒子阴影opacity 不透明度 CSS3 新增背景属性ba…...