【升职加薪秘籍】我在服务监控方面的实践(9)-报警设计

news2024/11/30 10:39:49

大家好,我是蓝胖子,关于性能分析的视频和文章我也大大小小出了有一二十篇了,算是已经有了一个系列,之前的代码已经上传到github.com/HobbyBear/performance-analyze, 接下来这段时间我将在之前内容的基础上,结合自己在公司生产上构建监控系统的经验,详细的展示如何对线上服务进行监控,内容涉及到的指标设计,软件配置,监控方案等等你都可以拿来直接复刻到你的项目里,这是一套非常适合中小企业的监控体系。

在前面的几节里,我挨个从机器监控,应用监控,中间件监控(mysql,redis) 应该如何来做,但光有监控还是不行的,我们不可能时时刻刻都盯着监控大盘,所以还需要有报警机制,这一节我们就来仔细研究下这部分。

监控系列的完整代码已经上传到github

github.com/HobbyBear/easymonitor

报警架构介绍

我们再来回顾下之前介绍的架构图,我们拥有一个自定义的告警服务。

整个报警来源主要分两部分,日志告警和指标告警,日志告警会对整个系统里错误等级的日志进行告警,指标告警则是在grafana上建立告警规则,最后通知到自定义的告警服务,由告警服务发送告警到各自的告警群。

image.png

logstash 日志告警

先来看看日志告警的配置,在logstash里,可以配置多输出源,这也是我们为啥要将filebeat的日志先发送到logstash的原因,filebeat只能单输出源,而我们的需求是需要将日志同时输出到es以及自定义的报警服务里。

output {  
  stdout { codec => rubydebug }  
  elasticsearch {  
    hosts => ["http://elasticsearch:9200"]  
    index => "easymonitor-%{[fields][log_type]}-%{+yyyy.MM.dd}"  
  }  
  if [level] == "error" {  
    http {  
           http_method => "post"  
           url => "http://ubuntu:16060/alert_log"  
        }  
  }  
}

logstash 里配置如果日志等级是error那么则将调用我们自定义的告警服务接口。

grafana指标告警

接着看下,指标告警的内容。在grafana上配置contact points 这个是触发告警时的通知策略。我们需要把它配置一个webhook端点,也就是告警服务的接口。

Pasted image 20230724115153.png

接着,将它设置为默认的通知策略。

Pasted image 20230724115319.png

最后,去Alert rules面板定义一些自定义的监控规则就行,到时候指标异常后就会通过设置好的http接口发送过来。

Pasted image 20230724115510.png

关于grafana的Alert rules 的配置,有几个关于时间的选项,我再说一下,如下,在配置报警规则的时候,需要配置两个时间,一个是多久运行一次指标的评估表达式,一个是配置在报警的持续时间,比如我在配置中写了10s运行一次报警,持续30s,也就是如果连续3次都触发了异常,那么就会对这次异常进行报警。

Pasted image 20230724134445.png

在报警通知的时候,也会有时间设置。

如下,group wait表示收到来自不同group时的报警时,在通知webhook端点时,不同group之间的报警会间隔30s才会发送,group interval表示同一个group报警规则在发送时,一批报警发送后,新的一批报警需要再5m后再发送给webhook端点。repeat interval 表示,相同的告警在4h内不会重复发送。

Pasted image 20230724134847.png

针对项目组和应用做不同报警策略

无论是日志告警还是指标异常报警,我们都需要注意一点,那就是报警的分组,因为如果把多个项目组的报警都发往一个告警群,会造成告警过多且杂。

好的设计应该是按项目组对报警进行分组发送到不同的告警群。不同的告警群由各自的业务负责人负责,所以我们在日志打印或者暴露指标时都携带了一个维度,应用服务的名称,通过应用服务的名称区分不同的项目组,并且关联到特定的钉钉告警群。

并且由于是自研的告警服务,我们还可以针对不同的项目组做一些定制化的告警策略。

应用服务和告警群的映射关系被配置到数据库表里,由告警服务读取后常驻与内存中,新的服务接入时也只需要往数据库插入一条配置便可以让他拥有告警能力,十分便捷。

总结

简单总结下,这一节也是构建服务监控系统的最后一节,后续有时间我可能会出一版容器环境下的监控,不过换汤不换药,主要是学习监控系统的思想,应该如何监控,应该如何通过这些监控指标或者日志定位问题,如何更好的定位问题,高效解决问题,一直都是我们的目的,大家对监控系统有什么好的想法或者实践,欢迎留言,我们一起探讨。

在万千人海中,相遇就是缘分,为了这份缘分,给作者点个赞👍🏻不过分吧。

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

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

相关文章

干了外包3个月,技术退步明显...

先说一下自己的情况,大专生,18年通过校招进入湖南某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

你觉得 Android 还有必要继续吗?

前言 这些年,总是听到有人说Android 开发岗位要凉了,不好做了。坦白说,市场倾向理性,竞争变强是很正常的事。但你发现总有些人,他们拿的 Offer 薪资是更高的,能达到年薪五六十万,甚至年薪百万。…

贪心算法总结篇

文章转自代码随想录 贪心算法总结篇 我刚刚开始讲解贪心系列的时候就说了,贪心系列并不打算严格的从简单到困难这么个顺序来讲解。 因为贪心的简单题可能往往过于简单甚至感觉不到贪心,如果我连续几天讲解简单的贪心,估计录友们一定会不耐…

房地产小程序制作要点:让你轻松搭建高效营销工具

近年来,随着房地产市场的不断发展和壮大,购房者对于房产信息的需求也日益增长。为了满足这一需求,许多开发商推出了看房预约小程序,以便让购房者更加方便快捷地了解房产信息并进行预约。然而,如何优化购房者体验&#…

论文阅读 FCOS: Fully Convolutional One-Stage Object Detection

文章目录 FCOS: Fully Convolutional One-Stage Object DetectionAbstract1. Introduction2. Related Work3. Our Approach3.1. Fully Convolutional One-Stage Object Detector3.2. Multi-level Prediction with FPN for FCOS3.3. Center-ness for FCOS 4. Experiments4.1. Ab…

重磅!TikTok将于8月底关闭半闭环 切断外链意在电商业务发展?

自2019年开始,TikTok电商业务逐渐走进人们的视线,并引起了市场的广泛关注。作为一家短视频平台,TikTok能够依靠其强大的用户基数与精准的推广策略,将流量成功转化为商业价值。截至目前,TikTok电商业务已经初步形成完整…

【Java】多线程(进阶)

多线程进阶 常见的所策略乐观锁和悲观锁重量级锁和轻量级锁自旋锁和挂起等待锁自旋锁挂起等待锁 读写锁和互斥锁读写锁互斥锁 公平锁和非公平锁公平锁非公平锁 可重入锁和不可重入锁可重入锁不可重入锁 CASCAS应用实现原子类实现自旋锁 CAS的ABA问题 synchronized原理基本特点加…

ATKck靶场系列二

信息收集 nmap -sP 192.168.111.0/24 nmap -sS -T4 -A -v -p- 192.168.111.80─# nmap -sS -T4 -A -v -p- 192.168.111.80 Starting Nmap 7.93 ( https://nmap.org ) at 2023-08-29 01:46 EDT NSE: Loaded 155 scripts for scanning. NSE: Script Pre-scanning. Initiating NS…

Linux之Shell(一)

Linux之Shell Shell概述Linux提供的Shell解析器bash和sh的关系Centos默认的解析器是bash Shell脚本入门脚本格式第一个脚本脚本常用的执行方式 变量系统预定义变量自定义变量特殊变量$n$#\$*、\$$? 运算符条件判断流程控制(▲)if判断case语句for循环while循环 read读取控制台输…

几种Go版本管理工具

缘起: 编译下面这段代码时,在Mac上没有什么问题,正常运行, 点击查看代码: package mainimport ( "bytes" "encoding/binary" "encoding/json" "fmt" "log" "math/rand" "net/http" "time")fu…

740212LD、740214、740214D、740214L比例插装线圈放大器

740212、740212D、740212L、740212LD、740214、740214D、740214L、740214LD、740228、740228D、740228L、740228LD、740612、740612D、740612L、740612LD、740614、740614D、740614L、740614LD线圈绕组采用N级(392 F [200 C]等级) 电磁线。 需要配对的电源线缆,该线…

ETC reset

ETC重新激活 换前挡风玻璃膜会把ETC设备拿下来,需要到【ETC服务中心】重新【粘上去】,另外需要工作人员用手持终端【重新激活】 ETC 背面有个 【白色】开关小柱子,一旦拆下来就失效,因为这个开关弹出来了 截面图看就是这样的&…

day 30 动态GDP柱状图绘制

列表.sort(key选择排序依据的函数,reverseTrue|False) 参数key:要求传入一个函数,表示将列表的每一个元素传入函数当中,返回排序的依据, 参数reverse,是否反转排序结果,True降序,False升序 my_list [[&…

linux下启动mysql不成功

最近在linux安装mysql数据库时,启动mysql,总是不成功,报如上所述问题,经过一番排查,最终是权限问题,将mysql目录下,统一修改为root权限。

C语言面向对象的编程思想

面向对象编程 面向对象编程Object-Oriented Programming,OOP) 作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。模型是用来反映现实世界中事物特征的。任何一个模型都不可能反映客观事物的一切具体特征&#xff0…

算法通过村第四关-栈黄金笔记|表达式问题

文章目录 前言1. 计算器问题2. 逆波兰表达式问题 总结 前言 提示:快乐的人没有过去,不快乐的人除了过去一无所有。 --理查德弗兰纳根《深入北方的小路》 栈的进阶来了,还记得栈的使用场景吗?表达式和符号,这不就来了 1…

杂记 23.8.30

目录 tesol专业介绍 EMBA项目 适合学习时候听的轻音乐 安全感和孤独感 puffy fix sb up with sth For all the world Size up 博雅、博雅教育 人是需要被仰视的 tesol专业介绍 tesol专业的全称是“Teaching English to Speakers of Other Language”,可译…

自动化管理管理工具----Ansible

目录 ​编辑 一、Ansible概念 1.1特点 二、工作机制(日常模块) 2.1 核心程序 三、Ansible 环境安装部署 四、ansible 命令行模块 4.1command 模块 4.2shell 模块 4.3cron 模块 4.4user 模块 4.5group 模块 4.6copy模块 4.7file模块 4.8ho…

支持AI视频处理的高容量流媒体加速卡方案

// 编者按: 实况直播业务随着流媒体市场的发展增长迅速。与传统流媒体“一对多”的模式不同,直播流媒体高交互的特性和 “多对多”的架构对时延的要求越来越高,传统基础设施部署和硬件已经不能高效处理这类需求。在此背景下,AMD…

ELK日志收集系统(四十九)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、概述 二、组件 1. elasticsearch 2. logstash 2.1 工作过程 2.2 INPUT 2.3 FILETER 2.4 OUTPUTS 3. kibana 三、架构类型 3.1 ELK 3.2 ELKK 3.3 ELFK 3.5 EF…