无监控,不运维!深入浅出介绍ChengYing监控设计和使用
监控系统俗称「第三只眼」,几乎是我们每天都会打交道的系统,它也一直是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上的通道的对接。
整体结构如下:

平台接入好主机和部署好服务后,prometheus就能通过服务发现的方式完成目标抓取作业的生成获取监控数据。grafana从prometheus中获取指标数据进行展示,同时触发告警将告警内容发到dtalert组件中,dtalert组件将告警信息发往第三方平台上。
监控设计
那么prometheus是如何通过服务发现来获取目标抓取作业的信息的?
这里ChengYing主要是使用了prometheus的「基于文件的服务发现功能」,Prometheus 会按指定的时间计划从这些文件重新加载目标。对于集群我们分为两部分的监控信息,主机和服务。
● 主机
主机的服务发现流程是在主机接入集群的时候,ChengYing会对接入的主机进行初始化操作,该操作会下发node-exporter,然后将主机的ip和node-exporter端口作为一个目标作业写入node_sd_file.yml文件中。当然用户也能自己指定exporter的端口,这个配置已经提取到的matrix的配置文件中。
节点接入后生成的信息如下:

● 服务
至于服务同样也是使用基于文件的服务发现方式,那么服务的exporter该如何指定和部署呢?
我们在制作产品包的时候就需要把该服务的监控指标给暴露出来,在产品包的schema.yml文件中指定该服务的exporter的端口,同时服务也要将exporter组件放到产品包中,在启动服务的时候一同启动。如下:


在制作好产品包后,通过ChengYing平台去部署该产品包的时候,由于需要对服务进行编排,那么我们就能同时解析出服务暴露的指标端口和服务所部署的目标ip地址。
在完成服务部署后,ChengYing就能将该服务的目标抓取作业写入service_sd_file.yml文件中。(要是我们在部署过程中发现我们使用的exporter端口发生了改变,可以在部署产品包的时候在页面修改对应的配置,平台最终会以修改的为准)

告警设计
ChengYing在获取了监控信息后,该如何展示这些指标数据以及告警呢?
· 首先需要为该产品包配置专属的仪表盘,在这个仪表盘配置中配置好服务要监控的指标信息及其水位线,然后还需要为该仪表盘增加一些标签,标签的key-value为"产品包的名称"和"服务名称",增加这些标签的用处在于通过ChengYing页面查看对应服务的仪表盘时能从grafana中过滤出来
· 将配置好的仪表盘导入到ChengYing上
· 然后我们通过在ChengYing上访问服务的时候就能根据产品包名称和服务名称检索到我们指定的仪表盘
对于告警的话,当我们在ChengYing上配置好告警通道后,还需要在grafana上为服务配置好告警的内容,当grafana触发告警水位线的时候,会将定义好的告警内容消息发送到dtalert组件上,dtalert组件处理好消息内容后,再根据通道类型将告警信息发到第三方平台上。

ChengYing监控告警使用
下面我们来具体看下ChengYing的监控告警具体是怎样使用的。
概览页面的轮播盘配置
我们可以在概览页面上展示需要关注的核心仪表盘的轮播,该功能需要自行配置:
· 登录ChengYing平台选择"运维中心"->"概览",然后点击编辑按钮,将会跳转到grafana的轮播配置页面,或者通过访问ChengYing的地址(http://xxx/grafana/playlists),然后创建需要的轮播仪表盘
· 创建的轮播的设置中,轮播的名称必须填写"DTinsight_index",轮播间隔根据需要填写,然后选择需要轮播的仪表盘,最后点击保存即可
· 刷新概览页面就会展示结果

平台告警通道配置
● 创建告警通道
选择"部署中心"->"告警监控"->"告警",创建告警通道。

● 选择告警通道类型
选择告警通道类型,这里以选择钉钉通道为例,填写相关的信息,需要注意以下两点:
第一点为:"URL"处地址平台会默认填写dtalert的地址,这个地址为容器内部通信的域名地址,若使用host模式部署,该地址需要手动修改为dtalert所在节点的ip地址。
第二点为:通知消息模板,这里主要是配置告警的消息模板即配置模式使用的是grafana的原生格式,通过grafana告警的请求中获取对应的告警名称、消息内容、状态、和链接地址,如下:
告警名称: ${ruleName}
告警信息: ${message}
告警状态: ${state}
告警链接: ${ruleUrl}
而对于“通道配置信息”则是在对接第三方平台的时候需要对接的相关配置,如对接大鱼短信的时候配置其对应的对接身份id、访问的key等信息。

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

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

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

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

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

05
查看告警信息。

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

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


视频课程&PPT获取
视频课程:
https://www.bilibili.com/video/BV16g41147NG/?spm_id_from=333.999.0.0
课件获取:
关注公众号“数栈研习社”,后台私信“ChengYing”获得直播课件
想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=szbky
同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术qun」,交流最新开源技术信息,qun号码:30537511,项目地址:https://github.com/DTStack
无监控,不运维!深入浅出介绍ChengYing监控设计和使用的更多相关文章
- 运维服务器手段(监控宝,Nagios,百度通告平台)
站在"巨人"的肩膀上运维 现实问题 之前在论坛看到一个运维工程师的帖子,内容如下: "现在的一个IT工作者最头疼的就是加班,秃顶的是IT工作者最多.单身的是IT工作者最多 ...
- 无监控不运维——使用 Python 写一个小小的项目监控
在公司里做的一个接口系统,主要是对接第三方的系统接口,所以,这个系统里会和很多其他公司的项目交互.随之而来一个很蛋疼的问题,这么多公司的接口,不同公司接口的稳定性差别很大,访问量大的时候,有的不怎么行 ...
- 一、linux-mysql 运维DBA介绍
一.DBA数据库管理人员需要在整个架构中解决数据库的压力,前端业务通过扩展,加机器就可以很好的解决,但是存储.数据库就不是很好的可以进行扩展,数据也是分配不均的,所以,1)通过在数据库前面添加Memc ...
- python为运维人员打造一个监控脚本
0x00前言: 一直想写一个监控方面的脚本,然后想到了运维这方面的 后来就写了个脚本. 0x001准备: psutil模块 0x02正文: import os import time import r ...
- 基于Prometheus和Grafana的监控平台 - 运维告警
通过前面几篇文章我们搭建好了监控环境并且监控了服务器.数据库.应用,运维人员可以实时了解当前被监控对象的运行情况,但是他们不可能时时坐在电脑边上盯着DashBoard,这就需要一个告警功能,当服务器或 ...
- rabbitmq监控与运维
一.系统架构 二.监控 本指南涵盖了使用两个流行工具进行 RabbitMQ 监控: Prometheus,一个监控工具包:和Grafana,一个指标可视化系统.这些工具共同构成了一个强大的工具包,用于 ...
- 【Kafka】监控及运维——kafka-eagle
目录 简单介绍 概述 安装部署 一.环境要求 二.下载源码包并解压 三.准备数据库 四.修改配置文件 五.配置环境变量 六.启动kafka-eagle 七.成功运行 简单介绍 概述 Kafka-eag ...
- Puppet自动化运维-资源介绍篇(4)
1.什么是资源? 资源是Puppet最基础的元素,每个资源的定义都具有标题,类型,以及一系列的属性. 资源定义有如下的特性: (1) Puppet使用title在编译时区分每个资源,使用命名变量在 ...
- pssh,pdsh,mussh,cssh,dsh运维工具介绍
pssh 1 安装:#wget http://peak.telecommunity.com/dist/ez_setup.pypython ez_setup.py#wget http://paralle ...
- 监控和安全运维 1.5 nagios监控客户端-1
3. Nagios安装 - 客户端(192.168.0.12)在客户端机器上 rpm -ivh http://www.aminglinux.com/bbs/data/attachment/forum/ ...
随机推荐
- SetupFactory-脚本
1.写注册表 lResult = Registry.DoesKeyExist(HKEY_LOCAL_MACHINE, "SOFTWARE\\MapInfo\\MapX\\5.0") ...
- BUUCTF---还原大师(MD5)
1.题目 我们得到了一串神秘字符串:TASC?O3RJMV?WDJKX?ZM,问号部分是未知大写字母,为了确定这个神秘字符串,我们通过了其他途径获得了这个字串的32位MD5码.但是我们获得它的32位M ...
- 【Python】解决“Tk_GetPixmap: Error from CreateDIBSection”闪退问题
解决Python使用Tkinter的Notebook切换标签时出现的"Tk_GetPixmap: Error from CreateDIBSection 操作成功完成"闪退问题 零 ...
- 学习unigui【18】unidbgrid的GridsGroupingSorting
折腾二天,你不按照demo里的代码来,就是没有效果.功力不够导致的.学习学习再学习!努力努力再努力! procedure TUniGridsGroupingSorting.UniDBGrid1Mult ...
- AI时代:大模型开发framework之langchain和huggingface
langchain: 提供了大模型相关应用开发的所有便利. https://python.langchain.com/docs/get_started/introduction Build your ...
- MYSQL数据库 MariaDB断电恢复总结
背景:本次是机房异常断电,导致数据库文件损坏.在数据库自启动之后频繁宕机,在多次尝试以后,总结了一下几种方法,及供参考. 1.mariadb服务器断电重启之后Missing MLOG_CHECKPOI ...
- C#访问注册表
注册表 .wiz-editor-body .wiz-code-container { position: relative; padding: 8px 0; margin: 5px 0; text-i ...
- FastAPI数据库连接池配置与监控
title: FastAPI数据库连接池配置与监控 date: 2025/04/28 00:13:02 updated: 2025/04/28 00:13:02 author: cmdragon ex ...
- SpringCloud——自定义断言工厂
目录 场景:用户的请求头中需要有指定的用户名和密码才能访问. 断言工厂 参考系统AfterRoutePredicateFactory写法. package com.zjw.factory; impor ...
- 代码随想录第二十五天 | Leecode 491. 非递减子序列、46. 全排列、47. 全排列 II
Leecode 491. 非递减子序列 题目描述 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 .你可以按 任意顺序 返回答案. 数组中可能含有重 ...