Loading...
墨滴

任冬学编程

2021/07/20  阅读:37  主题:默认主题

基于Grafana实现自定义监控

tx工作的后端开发仔,分享后端技术、机器学习、数据结构与算法、计算机基础、程序员面试等话题。欢迎关注公众号“任冬学编程”

前言

因为本文内容较细较杂,所以先将文章结构目录放在前面,方便大家理清思路,同时这也是题主第一次写KM文章,如文中存在不足不当之处,希望大家批评指正,谢谢!

29
29
文章结构目录

1、背景

1.1、交叉监控

**监控是整个产品生命周期非常重要的一环,运维关注硬件和基础监控,研发关注各类中间件和应用层的监控,产品关注核心业务指标的监控。**对于数据上报、传输、存储、应用全链路进行自监控,可以实现实时采集监控数据、预知故障和告警等,但是如果自监控挂掉了又该怎么发现呢,这就需要引入外部交叉监控,监控自监控的生命周期。

1.2、监控工具选型

正所谓「无监控,不运维」,监控系统的地位不言而喻。关于监控系统的选型和一些监控基础可以参考大佬的文章监控系统选型。对于题主而言,交叉监控系统需要做到ES数据源导入、实时界面可视化、触发阈值后及时多方式告警,虽然ELK三剑客的Kibana也可以可视化,但是不太好用QAQ。

Grafana 是一个跨平台的开源可视化工具,通过配置数据源的而方式对数据进行复杂语句的查询和展示,支持MySQL、Elasticsearch等多达14种数据源并且大部分数据源支持配置告警。所以最后选择了操作方便简单的grafana!

小结:

  • 外部巡检+内部自检,交叉监控可以防止内部监控挂掉无处查询监控数据的问题,增强监控的纵深和层级。

  • 监控图表立体化,根据关联性对图表分组和并建立层级关系,监控图表的聚合、分组、立体化对快速定位问题根源是非常关键的。

  • Grafana自定义监控配置较为方便简单

2、实操

上面讲到交叉监控工具选型定为grafana,需要完成ES数据源导入、实时界面可视化、触发阈值后多方式告警等需求,下面进入实操阶段。

2.1、配置DataSource

主要是对数据源进行相关的设置,生成有效的数据源

选择导入数据源类型
选择导入数据源类型
选择数据源类型
2
2
数据源相关配置

2.2、配置Dashboard

在配置好所使用的数据源之后,即可新增配置自己的面板。面板也存在多种:

4
4
可视化方式

这里选取graph为例,如下图所示,新增或配置仪表盘。右上角的红框中表示:新建、标星、分享、保存、设置、查询模式、时间段、缩小(针对时间段进行放宽,即小时间段换成了大时间段)、刷新等

5
5
界面总览
6
6
General界面

2.3、配置Variables

这里进行模板变量的设置,主要是为了方便后续界面查询,搭配灵活下拉框的配置方式,进行监控图表的自定义聚合,快速定位问题。

7
7
Variables设置

对于Query语句的设置,参考官方文档的配置方式说明:

Query 描述
{“find”:“fields”,“type”:“keyword”} 返回索引类型的字段名称列表keyword
{“find”:“terms”,“field”:“@ hostname”,“size”:1000} 使用术语聚合返回字段的值列表。查询将用户当前仪表板时间范围作为查询的时间范围。
{“find”:“terms”,“field”:“@ hostname”,“query”:' “} 使用term aggregation&和指定的lucene查询过滤器返回字段的值列表。查询将使用当前仪表板时间范围作为查询的时间范围。

在进行了有效的变量设置后,可以保存查看预览效果

8
8
保存Variables设置
9
9
Variables配置效果预览

注意上面仅仅是完成了变量的配置,在数据查询中下拉框并未起作用,需要使用query语句对变量进行绑定才能生效!!

10
10
Variables绑定生效

2.4、对接星云告警

星云告警管理系统,是一个面向告警的通用管理方案,提供了告警接入了上报、屏蔽、订阅、收敛、恢复、查询、通知(支持电话、微信、企业微信、邮件小程序)、升级、自动化处理、统计分析等管理能力;通过对告警数据的结构化定义,丰富开放的API,系统具备高度的可定制化能力;同时无缝对接腾讯云星云工单系统、值班系统、流程引擎,具备了强大的自动化处理能力;目前主要服务于腾讯云基础IAAS运维场景,已接入云绝大部分基础告警。

星云告警管理系统地址:告警查询

2.4.1、相关配置

  • **第一步:**检查是否已经存在星云告警 channel,如果没有则在 Alerting – Notification channels 新增 channel。
11
11
12
12

注意:该 channel 只需在第一次使用该接口时配置,配置一次即可,如果已经存在星云告警,则直接进行第二步。

  • **第二步:**配置告警条件,选择 Panel 页面左边的 Alert 选项,进行告警条件的配置。
13
13
模板变量无法配置告警

注意这里会提示模板变量无法配置告警,题主给出两种解决方案:

1、多查询方案:下图中A查询配置了模板变量无法配置告警,可以对新增的查询B不使用模板变量配置query语句,从而进行配置告警。(注意将B视图屏蔽,避免出现视图重叠问题)

15
15
add Query

2、双视图方案:可以设置双视图,一个用来monitor用来监控,另外一个视图进行Alert告警,其他配置和第一种方案相同。

两种方式区别不是很大,多视图可能更方便直观一点。
24
24
双视图配置

解决模板变量问题后,回归正题,进行告警条件的配置

16
16
配置告警条件
  • **第三步:**配置告警信息
17
17
配置告警信息
  • 第四步星云新增订阅告警信息
18
18
星云订阅告警信息

2.4.2、测试告警

  • **告警触发测试:**在完成相关告警条件和规则的配置后,可以进行测告警测试,判断是否会进行触发。
23
23
告警触发测试
  • **开启告警规则:**如果以上操作都没有出现问题,那么恭喜你可以启用告警规则,进行正式的监控啦!!
21
21
开启告警规则
  • 告警效果:
19
19
邮件告警
20
20
rtx告警
  • **告警历史查询:**Grafana同样可以查看告警历史,
22
22
告警历史查询
  • **Dashboard状态显示:**Dashboard界面也会有红绿不同颜色的线条提醒不同状态
25
25
状态显示

3、References

本文主要参考的文章如下,感谢这些文章的作者。

Grafana全面瓦解

grafana高可用和Alerting

任冬学编程

2021/07/20  阅读:37  主题:默认主题

作者介绍

任冬学编程

微信公众号:任冬学编程