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
英文地址,請注明出處:http://en.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 - 智能標簽頁切換** ?? **標簽頁批量操作** ?? …