无监控,不运维!深入浅出介绍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/ ...
随机推荐
- DNS介绍与实现方法
简介:域名系统(Domain Name System,缩写:DNS)是互联网的一项服务.是一种可以将域名和IP地址相互映射的以层次结构分布的数据库系,允许终端用户设备将给定的人类可读URL转换为网络可 ...
- 搜索算法1——聊聊dfs与回溯
搜索算法1--聊聊dfs与回溯 目录 1.dfs 的概念 $\ \ \ $1.1 dfs 的概念 2.dfs 的做法 $\ \ \ $2.1 为什么要用 dfs $\ \ \ $2.2 dfs 如何实 ...
- grequests,并发执行接口请求的方法(简易版)
有时候需要处理很多请求,显然,一个一个去处理是要花费很多时间的 我们就需要用到并发的方式,python并发请求的方法很多,从简单到复杂. 本案例,介绍一个超级简单,使用grequests库,实现并发请 ...
- MySQL 中 INNER JOIN、LEFT JOIN 和 RIGHT JOIN 的区别是什么?
在MySQL中,INNER JOIN.LEFT JOIN和RIGHT JOIN是用于连接两个或多个表的操作符,它们的主要区别在于如何处理匹配的记录和不匹配的记录. INNER JOIN: 只返回两个表 ...
- Cpu 资源占用高排查
查看java进程 ps aux | grep java 或者 ps -ef | grep java 查看java进程 线程信息 使用top -p [PID] -H 观察该进程中所有线程的资源占用 to ...
- nodejs判断文件的字符集编码
----------------------------------- 通过前2字节判断: 编码 16进制数 unicode FF FE 或 FE FF utf-8 EF BB 代码: var fs ...
- php 根据时间设置多少小时 ,前天,昨天,多少月,多少年
public static function formatTime($time){ if (is_int($time)) { $time = intval($time); } elseif ($tim ...
- Python3多线程
一.进程和线程 进程:是程序的一次执行,每个进程都有自己的地址空间.内存.数据栈及其他记录运行轨迹的辅助数据. 线程:所有的线程都运行在同一个进程当中,共享相同的运行环境.线程有开始.顺序执行和结束三 ...
- 通过IP计算分析归属地
在产品中可能存在不同客户端,请求同一个服务端接口的场景. 例如小程序和App或者浏览器中,如果需要对请求的归属地进行分析,前提是需要先获取请求所在的国家或城市,这种定位通常需要主动授权,而用户一般是不 ...
- 小米root教程 —— 基于小米11
1.解BL锁 工具下载及教程 解锁工具下载 2.root 通过magisk实现 Magisk安装教程 Magisk安装完即root. 升级系统root会丢失,我是重新root的,很麻烦,建议搜索保留r ...