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

从0到1搭建大数据平台之监控

大家好,我是脚丫先生 (o^^o)

大数据平台设计中,监控系统尤为重要。

它时刻关乎大数据开发人员的幸福感。

试想如果半夜三更,被电话吵醒解决集群故障问题,那是多么的痛苦!!!

但是不加班是不可能的,因此就要避免无效的集群报警对我们造成影响,完善我们的监控预警系统,经过精细化监控指标项、对异常进行自动化处理、告警收敛等一系列操作,相信你也可以睡一个安稳觉。

一、监控系统

小伙伴们都知道,搭建一个大数据平台不是目的,稳定的使用才是核心。

大数据平台的日志监控可以说是数据开发人员的两只眼睛。

然而大数据平台涉及的组件比较多,因此一个统一的集群和平台监控必不可少。

一般而言,我们主要以:监控粒度、监控指标完整性、监控实时性作为评价监控系统是否优秀的三要素。

我们将监控系统分为三层

  • 系统层

顾名思义,系统层主要监控我们大数据平台所依赖的服务器。

通过对服务器的监控,可以实时的掌握服务器的工作状态、内存消耗、健康状态等,以保证服务器的稳定运行。

监控指标: 内存、磁盘、CPU、网络流量、系统进程等系统级别指标。

  • 应用层

应用层的监控可以理解为,对部署在服务器上的各种应用进行监控。包括但是不限于Hadoop集群、调度服务和大数据平台应用等等。

比如说,Hadoop集群的某个节点出现了故障,我们能够快速定位,并处理该问题。

对应用的整体运行状况进行了解、把控,确保服务的状态正常,服务的运行性能正常。

监控指标: JVM堆内存、GC、CPU使用率、线程数、吞吐量等。

  • 业务层

业务层算是最贴近系统用户的,同时可以反馈系统及应用层的问题。

业务系统本质目的是为了达成业务目标,因此监控业务系统是否正常最有效的方式是从数据上监控业务目标是否达成。

对业务数据进行监控,可以快速发现程序的bug或业务逻辑设计缺陷。

比如说,我们会监控调度服务的执行情况、Datax数据集成的抽取情况等等。

二、常用大数据平台开源监控组件

常用的开源监控组件比较多,这里以比较常用的三种。

  • Zabbix

基于Web界面提供分布式系统监视及网络监视功能的企业级开源解决方案。

它易于入门,能实现基础的监控,但是深层次需求需要非常熟悉Zabbix并进行大量的二次定制开发,难度较大;此外,系统级别报警设置相对比较多,如果不筛选的话报警邮件会很多;并且自定义的项目报警需要自己设置,过程比较繁琐。

  • OpenFalcon

小米开源的面向互联网企业的监控产品。它是一款企业级、高可用、可扩展的开源监控解决方案,提供实时报警、数据监控等功能。可以非常容易的监控整个服务器的状态,比如磁盘空间,端口存活,网络流量等。

  • Prometheus

它是一套开源的监控、报警和时间序列数据库组合。也是最近比较流行的开源监控工具~深受广大小伙伴的喜欢。作为新一代的云原生监控系统,其最大的优点在于:

易管理性Prometheus核心部分只有一个单独的二进制文件,可直接在本地工作,不依赖于分布式存储
高效性单一Prometheus可以处理数以百万的监控指标;每秒处理数十万的数据点
易于伸缩性可以对Prometheus进行扩展,形成一个逻辑集群
丰富的看板多种可视化图表及仪表盘支持
针对容器监控对docker,k8S监控有成熟解决方案

总而言之, 以上三种是现在较为流行的监控工具,在这里我进一步对他们进行方案对比:

ZabbixOpenFalconPrometheus
可扩展性可扩展能力强可扩展能力强可扩展能力强
监控数据采集推送、拉取推送、拉取推送、拉取
监控数据存储mysql/psql归档RRD,存储mysql+redis+opentsdb自带时序数据库存储方案, 类似于OpenTSDB
自定义指标c++/pythongo/python/shellgo/python/shell
告警功能支持支持支持
使用场景大中型企业、私有云大中型企业、私有云大中型企业、私有云

三、大数据平台监控体系构建

3.1 概况

研发的大数据平台,修改了前端登陆界面,对于一个大数据开发人来说,前端的学习真的非常痛苦,感觉好难。

不过也是逐渐上手了。

其监控体系是基于基于开源:xxx_exporter+promethues+grafana的构建监控系统,方案如下

其中

  • exporter

一般是使用来采集各种组件运行时的指标数据。

  • promethues

构建指标时序数据库。

  • grafana

构建指标显示面板。

目前已有各种docker容器方便的构建各种监控体系

3.2 构建过程

详细的xxx_exporter+promethues+grafana搭建过程,直接参考百度,较为详细。

(1)采用docker的方式快速搭建监控基础。

version: '3.7'services:node-exporter:image: prom/node-exporter:latestrestart: alwaysnetwork_mode: "host"ports:- "9100:9100"dingtalk:image: timonwong/prometheus-webhook-dingtalk:latestrestart: alwaysnetwork_mode: "host"volumes:- ./alertmanager/config.yml:/etc/prometheus-webhook-dingtalk/config.ymlports:- "8060:8060"alertmanager:depends_on:- dingtalkimage: prom/alertmanager:latestrestart: alwaysnetwork_mode: "host"volumes:- ./alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.ymlports:- "9093:9093"- "9094:9094"prometheus:depends_on:- alertmanagerimage: prom/prometheus:latestrestart: alwaysnetwork_mode: "host"user: rootvolumes:- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml- ./prometheus/alert-rules.yml:/etc/prometheus/alert-rules.yml- ./prometheus/configs:/etc/prometheus/configsports:- "9090:9090"grafana:depends_on:- prometheusimage: grafana/grafana:latestrestart: alwaysnetwork_mode: "host"volumes:- ./grafana:/var/lib/grafana- ./grafana.ini:/etc/grafana/grafana.ini- ./index.html:/usr/share/grafana/public/views/index.htmlports:- "3000:3000"

(2) promethues的配置


#全局配置信息:
global:scrape_interval:     15s #默认抓取间隔1m, 15秒向目标抓取一次数据evaluation_interval: 15s 
#个性化的抓取配置信息
scrape_configs:- job_name: prometheusstatic_configs:- targets: ['localhost:9090'] 
#监控物理主机:cpu、memory、disk等 - job_name: node_exporterstatic_configs:- targets:- 'localhost:9091'
- job_name: 'bigdata-namenode'  #用于监控namenode组件file_sd_configs:- files:- configs/namenode.json  #hdfs参数获取地址- job_name: 'bigdata-datanode' #用于监控datanode file_sd_configs:- files:- configs/datanode.json- job_name: 'bigdata-resourcemanager' #用于监控resourcemanagerfile_sd_configs:- files:- configs/resourcemanager.json - job_name: 'bigdata-nodemanager'   #用于监控nodemanagerfile_sd_configs:- files:- configs/nodemanager.json

针对于大数据组件繁多,因此对于监控json的配置也需要一一对应。

暂时以以上几个组件监控为例。

(3)构建之后的效果

以grafana指标展示界面,嵌入大数据平台里作为监控系统。

效果图主要是在grafana里对每个组件进行编辑,小伙伴们可以自行设计想要的效果。

更多精彩内容请关注 微信公众号 👇「大数据指北」🔥:


一枚热衷于分享大数据基础原理,技术实战,架构设计与原型实现之外,还喜欢输出一些个人私活案例。


更多精彩福利干货,期待您的关注 ~

相关文章:

从0到1搭建大数据平台之监控

大家好,我是脚丫先生 (o^^o) 大数据平台设计中,监控系统尤为重要。 它时刻关乎大数据开发人员的幸福感。 试想如果半夜三更,被电话吵醒解决集群故障问题,那是多么的痛苦!!! 但是不加班是不可…...

采购评标管理过程是怎样的?有哪些评标标准?

采购活动的评标是检查和比较投标的有组织的过程,以选择最佳报价,努力获得实现企业目标所需的货物、工程和服务。 评标是由一个被称为评标小组的机构负责。这个小组如何称呼,取决于企业的情况。同义词有报价审查小组、投标审查委员会或投标审…...

《Vue+Spring Boot前后端分离开发实战》专著累计发行上万册

杰哥的学术专著《VueSpring Boot前后端分离开发实战》由清华大学出版社于2021年3月首次出版发行,虽受疫情影响但热度不减,受到业界读者的热捧,截至今日加印5次,累计发行12000册,引领读者开发前后端分离项目&#xff0c…...

类与类之间的关系有哪几种?

文章目录程序设计要素1.可读性2.健壮性3.优化4.复用性5.可扩展性设计类的关系遵循的原则1、 高内聚低耦合2、面向对象开发中 “针对接口编程优于针对实现编程”,”组合优于继承” 的总体设计类与类之间的关系(即事物关系) A is-a B 泛化&…...

LeetCode 606.根据二叉树创建字符串,102.二叉树的层序遍历和牛客 二叉搜索树与双向链表

文章目录1. 根据二叉树创建字符串2. 二叉树的层序遍历3. 二叉搜索树与双向链表1. 根据二叉树创建字符串 难度 简单 题目链接 解题思路: 这里的意思就是:用前序遍历遍历这颗树。然后左子树和右子树分别在一个括号里。括号里的规则是: 1.左右都…...

02-18 周六 图解机器学习之SMV 第五章5-2

02-18 周六 图解机器学习之SMV 第五章5-2时间版本修改人描述2023年2月18日11:47:18V0.1宋全恒新建文档 环境 程序的基本环境,是使用了jupyter,在容器中运行的。 简介 本程序主要演示支持向量的获取,支持向量是距离超平面最近的点组成的。程序…...

Spring Boot系列--创建第一个Spring Boot项目

1.项目搭建 在IDEA中新建项目,选择Spring Initializr。 填写项目信息: 选择版本和Spring Web依赖: Spring Web插件能为项目集成Tomcat、配置dispatcherServlet和xml文件。此处选择的版本若为3.0.2的话会出现如下错误: java: …...

手把手教你用React Hook和TypeScript从零实现虚拟滚动列表组件

前言 k8s 全称 kubernetes,这个名字大家应该都不陌生,k8s是为容器服务而生的一个可移植容器的编排管理工具,集应用的部署和运维,负载均衡,服务发现和扩容,版本回滚于一身,越来越多的公司正在拥…...

界面控件DevExpress WPF Pivot Grid——拥有强大多维数据分析能力!

界面控件DevExpress WPF的Pivot Grid组件是一个类似excel的数据透视表,用于多维数据分析和跨选项卡报表生成。它拥有众多的布局自定义选项,允许开发者完全控制其UI且以用户为中心的功能使其易于部署。PS:DevExpress WPF拥有120个控件和库&…...

python字典及基础操作

1) 字典是没有顺序的,是任意对象的无序集合。 2) 字典的键是唯一的,不能多次出现,多次出现时取最后一个值。 3) 键是不可变的。 4) 字典中的元素可增删。 5) 因为没有顺序,所以不存在索引。 1. 字典元素的访问 >>> …...

Windows Server 2008 R2安装onlyoffice【docker】

目录 前言 准备工作 安装docker 安装onlyoffice 常见问题 前言 目前docker for windows只能在windows10/11上安装,其他的windows版本只能使用Docker Toolbox来安装,使用该工具安装的docker其实是借助了Oracle VM VirtualBox虚拟机来运行的&a…...

JVM学习笔记六:运行时数据区之堆

目录 概述 堆空间内部结构 JDK7版本 JDK8版本 堆空间的内存划分 堆空间大小设置参数 概述 Java堆是虚拟机所管理的内存中最大的一块,其在JVM启动时即被创建,并且空间大小也被确定(这里是不考虑Java8之后以本地内存来实现的元空间&…...

usb闪存驱动器数据恢复该怎么进行?3个方法总结

“怎么办?我的USB驱动器不知道因为什么原因,里面的数据、文件都消失了。有没有什么方法在没有进行备份的情况下恢复从U盘丢失的数据?” USB驱动器作为最常用的存储移动设备,里面保存着各种文件数据。但是有时会出现损坏而导致数据…...

DAX 微信 markdown 编辑器

DAX 微信 markdown 编辑器 一、致谢 感谢开源项目: md wechat-format 感谢 WordPress 插件 Mine云点播 作者 mine27 的指导。 二、如何使用 打开如下地址,直接编辑,可以实时看到符合微信公众号排版的效果。 推荐访问:https://j…...

湖南中创教育为学员提供方便快速的退费服务

2006年,湖南中创教育科技有限公司创始人团队开始创业进入职业教育行业;2014年公司正式成立,组建专业团队并转型升级“互联网”,进入在线教育行业。 自主研发“中创网校”学习平台,为学员提供了集直播、视频回放复习、…...

Java 给视频添加背景音乐 | Java工具

目录 前言 Maven依赖 环境依赖 代码 总结 前言 本文提供给视频添加背景音乐的java工具&#xff0c;一如既往的实用主义。 Maven依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.1.1…...

【JUC2022】第二章 多线程锁

【JUC2022】第二章 多线程锁 文章目录【JUC2022】第二章 多线程锁一、乐观锁与悲观锁1.悲观锁2.乐观锁二、八锁案例1.标准情况&#xff0c;有a、b两个线程&#xff0c;请问先打印邮件还是短信【结果&#xff1a;邮件】2.sendEmail方法中加入暂停3秒钟&#xff0c;请问先打印邮件…...

快学会这个技能-.NET API拦截技法

大家好&#xff0c;我是沙漠尽头的狼。 本文先抛出以下问题&#xff0c;请在文中寻找答案&#xff0c;可在评论区回答&#xff1a; 什么是API拦截&#xff1f;一个方法被很多地方调用&#xff0c;怎么在不修改这个方法源码情况下&#xff0c;记录这个方法调用的前后时间&…...

stm32f407探索者开发板(十八)——串口通信实验讲解(USART_RX_STA流程图详解)

文章目录一、uart_init&#xff08;串口初始化&#xff09;二、USART1_IRQHandler&#xff08;串口1中断服务程序&#xff09;三、main.c&#xff08;主函数&#xff09;四、关于printf的支持一、uart_init&#xff08;串口初始化&#xff09; 就是根据上一篇的一样的步骤&…...

Hystrix资源隔离

目录资源隔离使用资源隔离的好处基于Hystrix实现微服务中资源隔离基于Hystrix线程池隔离实现资源隔离利用 HystrixCommand 获取单条数据利用 HystrixObservableCommand 批量获取数据基于 Hystrix 信号量机制实现资源隔离资源隔离 资源隔离是什么&#xff1f; 资源隔离是指把对…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...