无监控,不运维!深入浅出介绍ChengYing监控设计和使用

news2025/1/21 22:06:28

监控系统俗称「第三只眼」,几乎是我们每天都会打交道的系统,它也一直是IT系统中的核心组成部分,负责问题的发现以及辅助性的定位。

ChengYing作为一站式全自动化全生命周期大数据平台运维管家,自然也提供大数据产品的监控服务。这篇文章,将为大家系统性地介绍ChengYing监控的设计和使用,带大家进一步了解ChengYing。

常见监控系统比较

目前市面上主流大众都在用的监控系统主要有zabbix、openfalcon、prometheus,这三者都有各自适合的使用场景。下面来看下这三种监控系统各自的优缺点。

zabbix

zabbix属于老牌企业监控解决方案,优点是在企业的基础设施监控场景下提供了非常丰富的采集插件,能够快速建立起企业内部基础设施的监控和基础设施可视化大屏(包括网络的可视化等)。

zabbix的不足之处在于后端数据库使用了MySQL对监控数据进行存储,因此无法满足现在多维度化的告警需求。同时随着时间的推移,监控告警数据激增的瓶颈也会出现,同样的在对接应用层监控缺乏,所以更适合企业底层基础设施的监控。(注:最新版本的数据库替换了TimescaleDB)

openfalcon

openfalcon是小米开源的企业级监控解决方案,它整体的架构上吸取了zabbix的经验同时也解决了zabbix的不足之处,但是社区的活跃性不高。

prometheus

prometheus是谷歌开源的新一代监控系统,也是契合目前云原生较好的解决方案。优势在于社区活跃度高能推进普适化功能的演进,比如之前只支持pull方式,现在prometheus自身支持了可靠的push的方式推送数据到远端tsdb时序数据库中,同时单点的也能支撑起数百万的metrics指标数据。

不足之处在于官方不提供高可用的架构,需要自行处理,这些方案在社区中也有很多。

ChengYing监控设计

ChengYing平台则是选择了集成prometheus这套监控解决方案。其中的主要原因,是这套解决方案是目前主流的方案,使用的人群较多,推广使用上门槛低而且易维护,同时也适合ChengYing平台的容器化部署。

下面我们来看下这套监控系统是如何在ChengYing平台上进行集成的。

架构设计

首先我们在这套平台的基础上增加了一个dt-alert组件用来对接第三方的告警发送处理,其次我们对grafana进行了少量的二次开发,开发的内容主要在于打通ChengYing平台的告警通道和grafana上的通道的对接。

整体结构如下:

file

平台接入好主机和部署好服务后,prometheus就能通过服务发现的方式完成目标抓取作业的生成获取监控数据。grafana从prometheus中获取指标数据进行展示,同时触发告警将告警内容发到dtalert组件中,dtalert组件将告警信息发往第三方平台上。

监控设计

那么prometheus是如何通过服务发现来获取目标抓取作业的信息的?

这里ChengYing主要是使用了prometheus的「基于文件的服务发现功能」,Prometheus 会按指定的时间计划从这些文件重新加载目标。对于集群我们分为两部分的监控信息,主机和服务。

● 主机

主机的服务发现流程是在主机接入集群的时候,ChengYing会对接入的主机进行初始化操作,该操作会下发node-exporter,然后将主机的ip和node-exporter端口作为一个目标作业写入node_sd_file.yml文件中。当然用户也能自己指定exporter的端口,这个配置已经提取到的matrix的配置文件中。

节点接入后生成的信息如下:

file

● 服务

至于服务同样也是使用基于文件的服务发现方式,那么服务的exporter该如何指定和部署呢?

我们在制作产品包的时候就需要把该服务的监控指标给暴露出来,在产品包的schema.yml文件中指定该服务的exporter的端口,同时服务也要将exporter组件放到产品包中,在启动服务的时候一同启动。如下:

file file

在制作好产品包后,通过ChengYing平台去部署该产品包的时候,由于需要对服务进行编排,那么我们就能同时解析出服务暴露的指标端口和服务所部署的目标ip地址。

在完成服务部署后,ChengYing就能将该服务的目标抓取作业写入service_sd_file.yml文件中。(要是我们在部署过程中发现我们使用的exporter端口发生了改变,可以在部署产品包的时候在页面修改对应的配置,平台最终会以修改的为准)

file

告警设计

ChengYing在获取了监控信息后,该如何展示这些指标数据以及告警呢?

· 首先需要为该产品包配置专属的仪表盘,在这个仪表盘配置中配置好服务要监控的指标信息及其水位线,然后还需要为该仪表盘增加一些标签,标签的key-value为"产品包的名称"和"服务名称",增加这些标签的用处在于通过ChengYing页面查看对应服务的仪表盘时能从grafana中过滤出来

· 将配置好的仪表盘导入到ChengYing上

· 然后我们通过在ChengYing上访问服务的时候就能根据产品包名称和服务名称检索到我们指定的仪表盘

对于告警的话,当我们在ChengYing上配置好告警通道后,还需要在grafana上为服务配置好告警的内容,当grafana触发告警水位线的时候,会将定义好的告警内容消息发送到dtalert组件上,dtalert组件处理好消息内容后,再根据通道类型将告警信息发到第三方平台上。

file

ChengYing监控告警使用

下面我们来具体看下ChengYing的监控告警具体是怎样使用的。

概览页面的轮播盘配置

我们可以在概览页面上展示需要关注的核心仪表盘的轮播,该功能需要自行配置:

· 登录ChengYing平台选择"运维中心"->"概览",然后点击编辑按钮,将会跳转到grafana的轮播配置页面,或者通过访问ChengYing的地址(http://xxx/grafana/playlists),然后创建需要的轮播仪表盘

· 创建的轮播的设置中,轮播的名称必须填写"DTinsight_index",轮播间隔根据需要填写,然后选择需要轮播的仪表盘,最后点击保存即可

· 刷新概览页面就会展示结果 file

平台告警通道配置

● 创建告警通道

选择"部署中心"->"告警监控"->"告警",创建告警通道。 file

● 选择告警通道类型

选择告警通道类型,这里以选择钉钉通道为例,填写相关的信息,需要注意以下两点:

第一点为:"URL"处地址平台会默认填写dtalert的地址,这个地址为容器内部通信的域名地址,若使用host模式部署,该地址需要手动修改为dtalert所在节点的ip地址。

第二点为:通知消息模板,这里主要是配置告警的消息模板即配置模式使用的是grafana的原生格式,通过grafana告警的请求中获取对应的告警名称、消息内容、状态、和链接地址,如下:

告警名称: ${ruleName}

告警信息: ${message}

告警状态: ${state}

告警链接: ${ruleUrl}

而对于“通道配置信息”则是在对接第三方平台的时候需要对接的相关配置,如对接大鱼短信的时候配置其对应的对接身份id、访问的key等信息。

file

● 发送测试

完成告警通道配置后就可以点击「发送测试」按钮检查通道的正常。

file

grafana告警配置

01

"运维中心"->"服务"->"仪表板",选择需要为哪个服务进行告警。

file 02

编辑仪表盘,添加告警规则。 file

03

添加告警规则,设置需要告警的水位线,和告警名称。 file

04

添加告警通道,选择上面创建的告警通道,然后在“Message”里面填写需要自定义的内容,该内容会替换到上面告警模板中的${message}变量。

file 05

查看告警信息。

file 06

若想在“Message”里面体现告警的节点等相关标签信息,可以在仪表盘编辑页的Metrics选择"Query Inspector",查看当前指标数据中带有的标签信息,如下的metric的object对象内容,然后就可以从这个对象中获取对应的标签,进行完善告警内容。

file 修改告警“Message”内容如下:

file file

视频课程&PPT获取

视频课程:

https://www.bilibili.com/video/BV16g41147NG/?spm_id_from=333.999.0.0

课件获取:

关注公众号“数栈研习社”,后台私信“ChengYing”获得直播课件 想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=szcsdn

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术qun」,交流最新开源技术信息,qun号码:30537511,项目地址:https://github.com/DTStack

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

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

相关文章

力扣sql基础篇(二)

力扣sql基础篇(二) 1 每月交易I 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # sum函数如果需要筛选,可以考虑在里面嵌套if函数 SELECT DATE_FORMAT(trans_date,"%Y-%m") month,country,count(*) trans_count,COUNT(IF(state"appr…

matlab利用逻辑数组将保密率负数部分转换为零

通信中计算保密率的公式为 r[Rd−Re]r[R_d-R_e]^ r[Rd​−Re​] 其中RdR_dRd​代表合法目的地的数据速率,ReR_eRe​代表窃听节点的数据速率 当窃听节点的速率大于目的节点的速率时候,计算出来的保密率是负值,这在设计的时候可以将这时候的保…

referer、prototype、array、json笔记整理

目录referer、prototype、array、json笔记整理refererReferrer-policy如何设置referer绕过图片防盗链1、利用https网站盗链http资源网站,refer不会发送2、设置meta3、设置referrerpolicy"no-referrer"4、利用iframe伪造请求referer5、客户端在请求时修改h…

【LeetCode每日一题】——233.数字 1 的个数

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【时间频度】九【代码实现】十【提交结果】一【题目类别】 数学 二【题目难度】 困难 三【题目编号】 233.数字 1 的个数 四【题目描述】 给定一个整数 …

为你的Typecho使用Redis缓存,优化访问速度-织音博客

前言Typecho虽然轻量,但终究仍是PHP动态脚本,访问时需要频繁调取数据库的信息,导致并发值一高,CPU就100%占用,无法处理新的请求信息。这时,我们可以用Redis来设置缓存,从而不用频繁调动数据库&a…

【Meetup预告】SeaTunnel + OpenMLDB:共筑数据集成生态,加速实时场景落地

2023年1月12日(周四)20:00-21:30,云原生数据集成平台 SeaTunnel 联合开源机器学习数据库 OpenMLDB 合作带来本期 Meetup。 活动背景 Al 应用的繁荣发展,既得益于数据的爆发式增长,也受困于数据治理的种种…

使用Bokeh进行数据可视化的8个建议(上)

使用 Bokeh 库创建数据可视化的快速提示和示例。 长按关注《Python学研大本营》,加入读者群,分享更多精彩 扫码关注《Python学研大本营》,加入读者群,分享更多精彩 Python 是创建数据可视化的绝佳开源工具。有许多可用的数据可视…

JavaWeb:会话技术之Cookie

1,会话跟踪技术的概述 对于会话跟踪这四个词,我们需要拆开来进行解释,首先要理解什么是会话,然后再去理解什么是会话跟踪: 会话:用户打开浏览器,访问web服务器的资源,会话建立&…

设计模式-到底什么是builder模式

我们来看一个一些常见的开源代码中带builder字样的经典类:(jdk)Stringbuilder(spring)springApplicationBuilder(es)xxxQuerybulider如果只去看这些类的话,应该是一团乱码&#xff0…

【Kotlin】字符串操作 ① ( 截取字符串函数 substring | 拆分字符串函数 split | 解构语法特性 )

文章目录一、截取字符串函数 substring二、拆分字符串函数 split一、截取字符串函数 substring Kotlin 中提供了 截取字符串函数 substring , 可接收 IntRange 类型的参数 , 这是 整数范围 类型 ; 截取字符串函数 substring 函数原型为 : /*** 返回由给定的[range]索引指定的…

【pat】网红点打卡攻略【图】

一个旅游景点,如果被带火了的话,就被称为“网红点”。大家来网红点游玩,俗称“打卡”。在各个网红点打卡的快(省)乐(钱)方法称为“攻略”。你的任务就是从一大堆攻略中,找出那个能在…

【MyBatis】第一篇:初体验

还是老规矩看一下百度百科中的解释: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息&#xff0c…

Web(三)

JavaScript基础概念:一门客户端脚本语言* 运行在客户端浏览器中的。每一个浏览器都有JavaScript的解析引擎* 脚本语言:不需要编译,直接就可以被浏览器解析执行了功能:* 可以来增强用户和html页面的交互过程,可以来控制…

蓝桥杯C51

#include "reg52.h"sfr AUXR 0x8e; //定义辅助寄存器sbit S5 P3^2; //定义按键S5引脚 sbit S4 P3^3; //定义按键S4引脚unsigned char count 0; //定义中断计数器 unsigned char t_h 0; //定义运行时间的变量 unsigned char t_m 0; …

Struts2之OGNL表达式

Struts2之OGNL表达式1、什么是OGNL表达式2、OGNL表达式的作用3、值栈与OGNL3.1、值栈3.2、OGNL访问值栈4、类型转换4.1、类型转换的意义4.2、内置的类型转换器4.3、自定义类型转换器4.3.1、创建日期转换器4.3.2、配置转换器4.3.3、页面4.3.4、实体类和Action控制器4.3.5、strut…

从0到1完成一个Vue后台管理项目(七、Header、Footer、页面布局)

往期 从0到1完成一个Vue后台管理项目(一、创建项目) 从0到1完成一个Vue后台管理项目(二、使用element-ui) 从0到1完成一个Vue后台管理项目(三、使用SCSS/LESS,安装图标库) 从0到1完成一个Vu…

2010-2020年和讯网分行业社会责任指数

2010-2020年和讯网分行业社会责任指数 1、时间:2010-2020年 2、行业包括: 银行业(III)、人寿保险(III)、普通金融服务、工业运输、采矿业、饮料、不动产、食品与药品零售、电力(III&#xff…

JS字符串的截取出现的bug

前言 在js中我们对字符串进行一部分截取,可以使用slice()函数截取,也可以直接用substring()函数来截取,但是截取也有可能出bug const str小𠮷和小𧨁今天吃了50块钱的KFC console.log(str.slice(0,5)); 可以在控制台看…

ESP-IDF:数组为空异常处理例程

1.需要开启对ESP-IDF 中的 C 异常的支持。 默认情况下禁用对 ESP-IDF 中的 C 异常的支持,但可以使用 CONFIG_CXX_EXCEPTIONS 选项启用. 如果禁用对 ESP-IDF中的 C 异常的支持这样编译例程会报错: error: exception handling disabled, use -fexceptions to enable…

node.js中的文件读取写入操作

fs文件系统模块 什么是fs文件系统模块 fs模块是node.js官方提供的、操作文件的模块。通过fs模块可以实现对文件的读取以及写入操作。 例如: fs.readFile():用于读取指定文件的文件内容fs.writeFile():用于向指定的文件写入内容 引入fs模块&#xff…