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

news2025/2/25 3:25:31

大家好,我是脚丫先生 (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:latest
    restart: always
    network_mode: "host"
    ports:
      - "9100:9100"

  dingtalk:
    image: timonwong/prometheus-webhook-dingtalk:latest
    restart: always
    network_mode: "host"
    volumes:
      - ./alertmanager/config.yml:/etc/prometheus-webhook-dingtalk/config.yml
    ports:
      - "8060:8060"

  alertmanager:
    depends_on:
      - dingtalk
    image: prom/alertmanager:latest
    restart: always
    network_mode: "host"
    volumes:
      - ./alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml
    ports:
      - "9093:9093"
      - "9094:9094"

  prometheus:
    depends_on:
      - alertmanager
    image: prom/prometheus:latest
    restart: always
    network_mode: "host"
    user: root
    volumes:
      - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
      - ./prometheus/alert-rules.yml:/etc/prometheus/alert-rules.yml
      - ./prometheus/configs:/etc/prometheus/configs
    ports:
      - "9090:9090"

  grafana:
    depends_on:
      - prometheus
    image: grafana/grafana:latest
    restart: always
    network_mode: "host"
    volumes:
      - ./grafana:/var/lib/grafana
      - ./grafana.ini:/etc/grafana/grafana.ini
      - ./index.html:/usr/share/grafana/public/views/index.html
    ports:
      - "3000:3000"

(2) promethues的配置


#全局配置信息:
global:
  scrape_interval:     15s #默认抓取间隔1m, 15秒向目标抓取一次数据
  evaluation_interval: 15s 
#个性化的抓取配置信息
scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090'] 
#监控物理主机:cpu、memory、disk等 
  - job_name: node_exporter
    static_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' #用于监控resourcemanager
    file_sd_configs:
     - files:
       - configs/resourcemanager.json 
  - job_name: 'bigdata-nodemanager'   #用于监控nodemanager
    file_sd_configs:
     - files:
       - configs/nodemanager.json

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

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

(3)构建之后的效果

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

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

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


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


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/361936.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

shiro总结

0x00 前言 此篇作为shiro总结篇,用于查漏补缺。 利用工具推荐:https://github.com/j1anFen/shiro_attack 0x01 反序列化 1.shiro 124 shiro 124,因为AES加密秘钥硬编码导致反序列化漏洞,124修复 Java 代码审计——shiro 1.2…

React 虚拟DOM的前世今生

引文 通过本文你将了解到 什么是虚拟DOM?虚拟DOM有什么优势?React的虚拟Dom是如何实现的?React是如何将虚拟Dom转变为真实Dom? 一、前言 要了解虚拟DOM,我们先明确一下DOM的概念。 根据MDN的说法: 文档…

Win10关闭自动更新

Win10关闭自动更新第一步:修改电脑系统时间第二步,设置自动更新时间第三步:再次修改系统时间为正确时间因为国内使用的操作系统,很多‍是非正版的系统,如果更新了系统,很容易造成电脑蓝屏,系统运…

90%的合同麻烦都源于签约“漏洞”,君子签电子签章闭坑指南来了!

业务签约中,有哪些合同麻烦呢?文字套路、印章造假、假冒代签、乱签漏签、信息泄露…事实上,这些签约“漏洞”都是源于签约风险排查不到位,管控不力而导致的,以至于后期履约中纠纷也不断。 君子签针对业务签约中的各类…

小黑子的python入门到入土:第二章

python零基础入门到入土2.0python系列第二章1. 三目运算符2. 运算符优先级3. if 语句3.1 简单的if语句3.2 if-else 语句3.3 if-elif-else 语句3.4 if 语句注意点4. pass 关键字5. 猜拳游戏案例6. while 循环语句7. while 练习8. range9. for...in 循环的使用10. break 和contin…

小林coding

一、图解网络 问大家,为什么要有TCP/Ip网络模型? 对于同一台设备上的进程通信,有很多种方式,比如有管道、消息队列、共享内存、信号等方式,对于不同设备上的进程通信,就需要有网络通信,而设备是…

约束优化:PHR-ALM 增广拉格朗日函数法

文章目录约束优化:PHR-ALM 增广拉格朗日函数法等式约束非凸优化问题的PHR-ALM不等式约束非凸优化问题的PHR-ALM对于一般非凸优化问题的PHR-ALM参考文献约束优化:PHR-ALM 增广拉格朗日函数法 基础预备: 约束优化:约束优化的三种序…

【MyBatis】逆向工程与分页插件

11、MyBatis的逆向工程 11.1、创建逆向工程的步骤 正向工程:先创建Java实体类,由框架负责根据实体类生成数据库表。 Hibernate是支持正向工程的。 逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成如下资源…

公司技术团队为什么选择使用 YApi 作为 Api 管理平台?

在 2021 年 12 月份的时候我就推荐过一款软件程序员软件推荐:Apifox,当时体验了一下里面的功能确实很实用,但是当时公司有一套自己的 API 管理方案,所有 Apifox 暂时就没在内部使用。 直到最近要使用其他的 API 管理方案的时候才…

SAP ERP系统PP模块MRP运行参数说明

SAP/PP模块运行MRP(MD01/MD02)的界面有很多参数,这些参数的设置上线前由PP业务顾问根据实际业务需求定义好的,上线后一般不会轻易去调整,对于一般操作用户,按手册操作就行,不需要深入了解这些参数,但作为负…

收藏这几个开源管理系统做项目,领导看了直呼牛X!

项目SCUI Admin 中后台前端解决方案Vue .NetCore 前后端分离的快速发开框架next-admin 适配移动端、pc的后台模板django-vue-admin-pro 快速开发平台Admin.NET 通用管理平台RuoYi 若依权限管理系统Vue3.2 Element-Plus 后台管理框架Pig RABC权限管理系统zheng 分布式敏捷开发…

Redis的下载与安装

为便于大多数读者学习本套教程,教程中采用 Windows 系统对 Redis 数据库进行讲解。虽然 Redis 官方网站没有提供 Windows 版的安装包,但可以通过 GitHub 来下载 Windows 版 Redis 安装包,下载地址:点击前往。 注意:Win…

企业级解决方案Redis

缓存预热“宕机”服务器启动后迅速宕机1. 请求数量较高2. 主从之间数据吞吐量较大,数据同步操作频度较高解决方案前置准备工作:1. 日常例行统计数据访问记录,统计访问频度较高的热点数据2. 利用LRU数据删除策略,构建数据留存队列例…

全链路压力测试

压力测试的目标: 探索线上系统流量承载极限,保障线上系统具备抗压能力 复制代码 如何做全链路压力测试: 全链路压力测试:整体步骤 容量洪峰 -》 容量评估 -》 问题发现 -》 容量规划 全链路压力测试:细化过程 整体目…

Apache Shiro与Spring Security对比

Apache Shiro VS Spring Security 1.Spring Security 官方文档:https://spring.io/projects/spring-security#overview介绍: Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spr…

Java 基础(3)—synchornized 关键字简单理解

一、synchronized 修饰同步代码块 用 synchronized 修饰代码段作为同步锁,代码如下: public class LockDemo {public Object object new Object();public void show(){synchronized (object) {System.out.println(">>>>>>hell…

java Spring aop多个增强类作用于同一个方法时,设置优先级

我们先来模拟这种情况 我们先创建一个java项目 然后 引入Spring aop需要的基本依赖 然后 在src下创建一个包 我这里叫 Aop 在Aop包下创建一个类 叫 User 参考代码如下 package Aop;import org.springframework.stereotype.Component;Component public class User {public vo…

Java-形参与返回值

Java学习之道-1 一、形参与返回值 平时在进行代码编写的时候大多都是以变量作为形参或者以某种数据类型比如int、String或者Boolean等等作为返回值,本次主要介绍以下三种作为形参与返回值的情况 1、类名作为形参与返回值 类名,顾名思义是定义的class类&a…

国家级高新区企业主要经济指标(2012-2021年)

数据来源:国家统计局 时间跨度:2012-2021 区域范围:全国(及各分类统计指标) 指标说明:手工提取最新的中国统计年鉴数据中各个excel指标表,形成各个指标文件的多年度数据,便于多年…

物联网发展的重要通信技术Wi-Fi

Wi-Fi 可以适应各种场景的联网需求 Wi-Fi 在实现物联网创新方面发挥了基础性作用,提供了广泛的连接性,将各种“事物”相互连接、连接到互联网,以及连接到全球使用的 180 亿台 Wi-Fi 设备。物联网的经济潜力是无限的,Wi-Fi 为智能…