Skywalking告警配置+简易邮件告警应用配置(保姆级)

Skywalking告警配置+简易邮件告警应用配置

前言:

前文:SkyWalking + Elasticsearch8 容器化部署指南:国内镜像加速与生产级调优_skywalking+es-CSDN博客

​ SKywalking Agent配置+Oracle监控插件安装指南-CSDN博客

Skywalking版本:V10.2.0
Skywalking Agent版本:V9.4.0

一.告警规则配置及解释

1.指标解释
全局指标all_p99, 所有服务响应时间的 p99 值
all_p95
all_p90
all_p75
all_p70
all_heatmap, 所有服务响应时间的热点图
服务指标service_resp_time, 服务的平均响应时间
service_sla, 服务的成功率
service_cpm, 服务每分钟调用次数
service_p99, 服务响应时间的 p99 值
service_p95
service_p90
service_p75
service_p50
服务实例指标service_instance_sla, 服务实例的成功率
service_instance_resp_time, 服务实例的平均响应时间
service_instance_cpm, 服务实例每分钟调用次数
端点指标endpoint_cpm, 端点每分钟调用次数
endpoint_avg, 端点平均响应时间
endpoint_sla, 端点成功率
endpoint_p99, 端点响应时间的 p99 值
endpoint_p95
endpoint_p90
endpoint_p75
endpoint_p50
JVM 指标, JVM 相关的指标, 只有当 javaagent 启用时才有效instance_jvm_cpu
instance_jvm_memory_heap
instance_jvm_memory_noheap
instance_jvm_memory_heap_max
instance_jvm_memory_noheap_max
instance_jvm_young_gc_time
instance_jvm_old_gc_time
instance_jvm_young_gc_count
instance_jvm_old_gc_count
服务关系指标, 代表服务之间调用的指标 指标的 ID 只能在拓扑图查询中获取service_relation_client_cpm, 在客户端每分钟检测到的调用次数
service_relation_server_cpm, 在服务端每分钟检测到的调用次数
service_relation_client_call_sla, 在客户端检测到的成功率
service_relation_server_call_sla, 在服务端检测到的成功率
service_relation_client_resp_time, 在客户端检测到的平均响应时间
service_relation_server_resp_time, 在服务端检测到的平均响应时间
端点关系指标, 代表相互依赖的端点之间的指标. 只有在追踪代理启用时有效. 指标 ID 只能在拓扑查询中获得.endpoint_relation_cpm
endpoint_relation_resp_time
2.详细规则配置

因前文中部署方法为docker,故只需要修改容器外部的告警配置文件。

image-20250911182432851

目前的告警配置如下:

rules:service_resp_time_rule:expression: sum(service_resp_time > 2000) >= 5period: 15silence-period: 30tags:level: WARNINGteam: platformmessage: "【WARNING】Service {name} 平均响应 > 2000ms(15 分钟内 >=5 次)。"# 监控目标:服务成功率下降(轻度)。#含义:在“最近 15 分钟”里,至少 3 次服务成功率低于 90%。service_sla_warning_rule:expression: sum(service_sla < 9000) >= 3period: 15silence-period: 45tags:level: WARNINGteam: platformmessage: "【WARNING】Service {name} 成功率 < 90%(15 分钟内 >=3 次)。"#监控目标:服务成功率下降(重度)。#含义:在“最近 15 分钟”里,至少 3 个次成功率低于 90%。service_sla_critical_rule:expression: sum(service_sla < 8500) >= 2period: 10silence-period: 60tags:level: CRITICALteam: platformmessage: "【CRITICAL】Service {name} 成功率 < 85%(10 分钟内 >=2 次)。"hooks: ["webhook.mail"]#监控目标:服务尾延迟恶化(p95)。#含义:最近 10 分钟内,p95(95% 的请求)超过3s ≥ 2service_resp_time_percentile_rule:expression: sum(service_percentile{p='95'} > 3000) >= 2period: 10silence-period: 45tags:level: CRITICALteam: backendmessage: "【CRITICAL】Service {name} p95 > 3000ms(10 分钟内 >=2 次)。"hooks: ["webhook.mail"]#监控目标:某个实例平均响应时间升高。#含义:最近 15 分钟内,至少 3 次该实例均值 > 2s。service_instance_resp_time_rule:expression: sum(service_instance_resp_time > 2000) >= 3period: 15silence-period: 30tags:level: WARNINGteam: opsmessage: "【WARNING】实例 {name} 平均响应 > 2000ms(15 分钟内 >=3 次)。"database_access_resp_time_rule:expression: sum(database_access_resp_time > 2000) >= 3period: 15silence-period: 60tags:level: CRITICALteam: dbamessage: "【CRITICAL】DB {name} 响应 > 2000ms(15 分钟内 >=3 次,疑似慢 SQL)。"hooks: ["webhook.mail"]#服务每分钟调用次数(监控整个环境)service_offline_rule:expression: sum(service_cpm == 0) >= 15period: 15silence-period: 60tags:level: CRITICALteam: platformmessage: "【CRITICAL】Service {name} 连续 15 分钟无流量(疑似掉线/假死)。"hooks: ["webhook.mail"]#service_instance_cpm, 服务实例每分钟调用次数(监控单个服务)service_instance_offline_rule:expression: sum(service_instance_cpm == 0) >= 5period: 10silence-period: 60tags:level: WARNINGteam: opsmessage: "【WARNING】Instance {name} 连续 5 分钟无流量(疑似掉线/假死)。"hooks: ["webhook.mail"]
hooks:webhook:mail:#is-default: trueurls:- http://<your IP>:9000/sendheaders:X-Auth-Token: "changeme-optional"

关键配置参数说明

  • expression:告警触发条件的表达式
  • period:统计时间窗口(分钟)
  • silence-period:静默期(分钟),避免告警风暴
  • tags:告警标签,用于分类和筛选
  • level:告警级别(WARNING/CRITICAL)
  • team:负责处理该告警的团队
  • hooks:告警触发时调用的 Webhook

配置成功后重启Skywalking-oap服务

docker restart skywalking-oap

确定没有报错后,即可再告警页面看见所配置的告警信息

image-20250911184021923

二.邮件告警通知配置以及邮件告警服务部署

1.告警服务代码和镜像构建

背景:在尝试过官方的钉钉告警配置后一直无法生效,改为邮件告警形式,Skywalking邮件告警需要单独写一个告警服务。此处为Python。

import os
import smtplib
import ssl
from typing import List, Union
from flask import Flask, request, jsonify
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.utils import formatdate, make_msgidapp = Flask(__name__)# 环境变量配置(Docker 部署时传入)
SMTP_HOST = os.getenv("SMTP_HOST", "smtp.qq.com")
SMTP_PORT = int(os.getenv("SMTP_PORT", 465))
SMTP_USER = os.getenv("SMTP_USER", "")
SMTP_PASS = os.getenv("SMTP_PASS", "")
MAIL_FROM = os.getenv("MAIL_FROM", SMTP_USER)
SUBJECT_PREFIX = os.getenv("SUBJECT_PREFIX", "[SkyWalking]")
API_TOKEN = os.getenv("API_TOKEN", "")# 默认收件人(支持环境变量配置)
MAIL_TO = os.getenv("MAIL_TO", "")
MAIL_CC = os.getenv("MAIL_CC", "")
MAIL_BCC = os.getenv("MAIL_BCC", "")@app.route("/send", methods=["POST"])
def send_mail():# 身份验证(若配置 Token)if API_TOKEN and request.headers.get("X-Auth-Token") != API_TOKEN:return jsonify({"error": "Unauthorized"}), 401# 解析 SkyWalking 告警数据data = request.get_json()# 邮件内容构建和发送逻辑# ...if __name__ == "__main__":app.run(host="0.0.0.0", port=9000)

以下是镜像打包时的Dockerfile:

FROM python:3.11-slim
ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1
RUN pip install --no-cache-dir flask gunicorn
WORKDIR /app
COPY app.py /app/app.py
EXPOSE 9000
CMD ["gunicorn", "-b", "0.0.0.0:9000", "-w", "1", "--threads", "2", "app:app"]

把两个文件放置于同一目录,如下。

image-20250911201206027

#执行打包命令
docker build -t mail-relay:1.0.0 .

然后部署服务,以下为运行的docker-compose.yml

services:mail-relay:image: mail-relay:1.0.0container_name: mail-relayrestart: unless-stoppedenvironment:SMTP_HOST: <smtp邮箱服务地址>SMTP_PORT: <smtp邮箱端口>SMTP_USER: <邮箱账号>SMTP_PASS: <邮箱密钥>MAIL_FROM: <邮箱>SUBJECT_PREFIX: "[SkyWalking]"API_TOKEN: "changeme-optional"MAIL_TO: "<邮箱接收者>,<邮箱接收者>"MAIL_CC: "<邮箱抄送者>"MAIL_BCC: ""ports:- "9000:9000"

运行成功后如下:

image-20250911202200732

image-20250911202234857

2.Skywalking告警配置

在规则配置处可见文末有一处配置如下

hooks:webhook:mail:#is-default: trueurls:- http://<your IP>:9000/sendheaders:X-Auth-Token: "changeme-optional"

如果需要每一个告警都通过邮件告知,则无需注释is-default: true。注释后,告警规则中包含hooks: ["webhook.mail"]配置的才会通过邮件告警通知。

邮件告警输出如下:
image-20250911203118439

image-20250911203043854

至此,Skywalking部署,插件安装至告警,配置完毕。

附件:告警代码文件下载地址

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

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

相关文章

无人机如何实现图传:从原理到实战的全景解读

无人机图传的工作不是简单地把镜头的数据直接“丢”到一个屏幕上&#xff0c;而是一个由编码、传输、解码三段组成的系统。首先是视频编码&#xff1a;摄像头采集的原始画面通常需要经过编解码器压缩&#xff0c;常见标准包括H.264、H.265和VP9等。压缩的目的是减少数据量&…

AS32S601在轨重构(OTA)方案的优化与分析

摘要在轨重构&#xff08;OTA&#xff09;技术因其在航天、工业控制、物联网等领域的高可靠性和持续服务需求而备受关注。本文以国科安芯推出的AS32S601芯片为研究对象&#xff0c;深入分析其OTA方案的设计原理、技术细节及优化策略&#xff0c;并结合芯片的硬件特性&#xff0…

修复Android studio的adb无法连接手机问题

复制下面的内容到一个文本txt里面然后把里面的Android studio路径和sdk路径改成你自己的&#xff0c;然后改成把.txt改成bat 右键管理员运行 echo off REM Deep Fix for "Couldnt terminate the existing process" error REM This script will completely reset ADB …

css优化都有哪些优化方案

CSS 优化其实可以分成几个层面&#xff1a;性能优化、可维护性优化、兼容性优化以及用户体验优化。这里我帮你梳理一份比较系统的 CSS 优化方案清单&#xff0c;方便你参考&#xff1a;&#x1f539; 一、加载性能优化减少 CSS 文件体积压缩 CSS&#xff08;去掉空格、换行、注…

vue,uniapp 实现卷帘对比效果

需求&#xff1a;两张图重叠放在一起&#xff0c;拖动分割线实现卷帘对比效果&#xff0c;如图一、vue2代码 <template><div class"main"><div class"img-comparison" mousedown"startSlide"><img class"before"…

【笔记】空气弹簧概述、刚度调节原理

参考链接&#xff1a;汽车底盘空气悬架关键零部件之空气弹簧 1.概述 汽车空气弹簧&#xff08;Air Spring&#xff09;是一种以“压缩空气”作为弹性介质的悬架元件&#xff0c;用来取代传统钢制螺旋弹簧或钢板弹簧。它在乘用车、客车、重卡及轨道交通上越来越普及&#xff0…

UDP Socket 进阶:从 Echo 到字典服务器,学会 “解耦” 网络与业务

开篇&#xff1a;从 “回显” 到 “字典”&#xff0c;核心变在哪&#xff1f;上一篇我们实现了 Echo 服务器 —— 网络层和业务层是 “绑死” 的&#xff1a;网络层收到数据后&#xff0c;直接把原数据发回去。但实际开发中&#xff0c;业务逻辑会复杂得多&#xff08;比如查字…

数据结构之复杂度

数据结构的理解 数据本身是杂乱无章的&#xff0c;需要结构进行增删查改等操作更好的管理数据&#xff1b; 比如&#xff1a;在程序中需要将大量的代码&#xff08;数据&#xff09;通过结构进行管理&#xff1b; 再比如&#xff1a;定义1000个整型变量的数组&#xff0c;我们…

运维安全06 - 服务安全

云计算服务安全 在当今数字化时代&#xff0c;各种服务&#xff08;如网络应用、云计算平台、数据库系统等&#xff09;已成为我们日常生活和工作中不可或缺的一部分。 然而&#xff0c;随着服务的广泛应用&#xff0c;其安全性问题也日益凸显。 一、服务安全 服务安全是一…

01数据结构-初探动态规划

01数据结构-初探动态规划前言1.基本思想2.重叠子问题3.斐波那契数列4.备忘录&#xff08;记忆化搜索表&#xff09;4.1备忘录&#xff08;记忆化搜索表&#xff09;代码实现5.DP table5.1DP table代码实现6.练习前言 在学习动态规划时切忌望文生义&#xff0c;因为其名字与其思…

[智能算法]可微的神经网络搜索算法-FBNet

一、概述 相较于基于强化学习的NAS&#xff0c;可微NAS能直接使用梯度下降更新模型结构超参数&#xff0c;其中较为有名的算法就是DARTS&#xff0c;其具体做法如下。 首先&#xff0c;用户需要定义一些候选模块&#xff0c;这些模块内部结构可以互不相同&#xff08;如设置不同…

Elasticsearch安装启动常见问题全解析

文章目录&#x1f4da; Elasticsearch 安装与启动问题总结一、核心问题概览二、详细问题分析与解决方案1. &#x1f510; **权限问题&#xff1a;AccessDeniedException**❌ 错误日志&#xff1a;&#x1f4cc; 原因&#xff1a;✅ 解决方案&#xff1a;2. ⚙️ **配置冲突&…

Uniapp中使用renderjs实现OpenLayers+天地图的展示与操作

Uniapp中自带的地图组件对支持的地图服务略有局限&#xff0c;同时&#xff0c;该组件在样式布局上层级过高且无法控制&#xff0c;无法满足部分高度自定义化的需求。故引入renderjs视图层工具搭配OpenLayers框架对地图功能进行实现&#xff0c;但由于renderjs的限制&#xff0…

从C++开始的编程生活(8)——内部类、匿名对象、对象拷贝时的编译器优化和内存管理

前言 本系列文章承接C语言的学习&#xff0c;需要有C语言的基础才能学会哦~ 第8篇主要讲的是有关于C的内部类、匿名对象、对象拷贝时的编译器优化和内存管理。 C才起步&#xff0c;都很简单&#xff01;&#xff01; 目录 前言 内部类 性质 匿名对象 性质 ※对象拷贝时的…

MT5追大速率回测BUG

将MT5策略测试器中的回测速率调到最大(最快速度),**确实非常容易导致出现不符合策略逻辑的秒级成交(闪电交易)**。这并非MT5的“bug”,而是由**回测引擎的工作方式**与**策略代码的编写方法**在高速运行下不匹配所导致的。 --- ### 为什么最大速率会导致问题? MT5回测…

[数据结构——lesson10.堆及堆的调整算法]

引言 上节我们学习完二叉树后[数据结构——lesson9.二叉树]&#xff0c;这节我们将学习数据结构——堆 学习目标 1.堆的概念及结构 堆是一种特殊的完全二叉树结构&#xff0c;在计算机科学和数据结构中广泛应用&#xff0c;特别是在堆排序算法和优先队列的实现中&#xff0c;…

九识智能与北控北斗合作研发的L4级燃气超微量高精准泄漏检测无人车闪耀服贸会,守护城市安全

2025年9月10日至14日&#xff0c;2025年中国国际服务贸易交易会将于北京首钢园举办。在这场国际盛会上&#xff0c;九识智能与北京北控北斗科技投资有限公司&#xff08;以下简称“北控北斗”&#xff09;合作研发的L4级燃气超微量高精准泄漏检测无人车及相关系统解决方案&…

【C语言入门】手把手教你实现顺序栈

栈是计算机科学中最基础且重要的数据结构之一&#xff0c;它遵循"后进先出"&#xff08;LIFO&#xff09;的原则。想象一下一叠盘子&#xff0c;你只能从最上面取放&#xff0c;这就是栈的直观体现。本文将用C语言带你一步步实现一个顺序栈&#xff0c;即使你是编程小…

北斗导航 | ARAIM(高级接收机自主完好性监测)算法在民航LPV-200进近中的具体实现流程

要详细说明ARAIM(高级接收机自主完好性监测)算法在民航LPV-200进近中的具体实现流程,需结合ARAIM的核心逻辑(多星座融合、多假设解分离、风险优化分配)与LPV-200的严格要求(垂直保护级VPL≤35米、垂直告警限VAL=35米、有效监测门限EMT≤15米等),以下是 step-by-step 的…

AIPex:AI + 自然语言驱动的浏览器自动化扩展

AIPex:AI + 自然语言驱动的浏览器自动化扩展 引言 一、快速上手 1.1 安装AIPex扩展 1.2 首次配置 1.3 界面介绍 第二章:30+工具详解 2.1 标签页管理工具集 🗂️ **get_all_tabs - 全局标签页概览** 🎯 **switch_to_tab - 智能标签页切换** 📋 **标签页批量操作** 📋 …