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

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...