使用skywalking進行go的接口監控和報警

安裝

helm upgrade --install skywalking ./skywalking-v1 --namespace skywalking --create-namespace

查看安裝結果

kubectl get pod -n skywalking
NAME                             READY   STATUS        RESTARTS      AGE
elasticsearch-6c4ccbf99f-ng6sk   1/1     Running       0             18m
oap-f945bcff7-wvvs5              1/1     Running       3 (18m ago)   18m
plugin-app-6c75f789-nthdb        1/1     Terminating   0             18m
plugin-app-f97cd4998-dq8dz       1/1     Running       0             10s
skywalking-ui-8b9f8fcb-f6r8f     1/1     Running       0             18m

go webhooks 轉發到釘群或者微信群

我現在讓他執行腳本因為這樣可以根據你們自己自定義吧,這是公開解決方案

package mainimport ("bytes""encoding/json""fmt""io/ioutil""net/http""net/url""time""github.com/gin-gonic/gin"
)type AlarmData struct {ScopeId      int      `json:"scopeId"`Scope        string   `json:"scope"`Name         string   `json:"name"`Id0          string   `json:"id0"`Id1          string   `json:"id1"`RuleName     string   `json:"ruleName"`AlarmMessage string   `json:"alarmMessage"`Tags         []string `json:"tags"`StartTime    int64    `json:"startTime"`
}// 配置常量
const (DIALOG_ID = "xx"TOKEN     = "xx"POST_URL  = "xx"VERSION   = "0.22.0"SILENCE   = "yes"
)func sendMessage(text string) (string, error) {form := url.Values{}form.Add("dialog_id", DIALOG_ID)form.Add("silence", SILENCE)form.Add("text", text)req, err := http.NewRequest("POST", POST_URL, bytes.NewBufferString(form.Encode()))if err != nil {return "", err}req.Header.Set("Content-Type", "application/x-www-form-urlencoded")req.Header.Set("version", VERSION)req.Header.Set("token", TOKEN)client := &http.Client{}resp, err := client.Do(req)if err != nil {return "", err}defer resp.Body.Close()body, err := ioutil.ReadAll(resp.Body)if err != nil {return "", err}return string(body), nil
}func main() {r := gin.Default()r.POST("/notify", func(c *gin.Context) {bodyBytes, err := ioutil.ReadAll(c.Request.Body)if err != nil {c.JSON(http.StatusBadRequest, gin.H{"error": "讀取請求體失敗"})return}var alarms []AlarmDataif err := json.Unmarshal(bodyBytes, &alarms); err != nil {c.JSON(http.StatusBadRequest, gin.H{"error": "JSON 格式錯誤"})return}for _, alarm := range alarms {// 構建消息文本message := fmt.Sprintf(`[報警信息]
告警名稱: %s
規則名稱: %s
報警內容: %s
作用域: %s (%d)
對象名稱: %s
對象ID0: %s
對象ID1: %s
標簽: %v
開始時間: %s`,alarm.Name,alarm.RuleName,alarm.AlarmMessage,alarm.Scope,alarm.ScopeId,alarm.Name,alarm.Id0,alarm.Id1,alarm.Tags,time.UnixMilli(alarm.StartTime).Format("2006-01-02 15:04:05"),)// 發送消息result, err := sendMessage(message)if err != nil {fmt.Println("發送失敗:", err)} else {fmt.Println("發送成功,響應:", result)}// 本地日志打印fmt.Println("---- Alarm ----")fmt.Println(message)}c.JSON(http.StatusOK, gin.H{"message": "報警數據已處理"})})r.Run(":8080")
}

報警配置

# 示例告警規則
rules:# 唯一的規則名,必須以 `_rule` 結尾service_resp_time_rule:metrics-name: service_resp_timeop: ">"threshold: 1000period: 10count: 3silence-period: 5message: 服務 {name} 的響應時間在過去10分鐘中有3分鐘超過了1000毫秒。service_sla_rule:metrics-name: service_slaop: "<"threshold: 8000period: 10count: 2silence-period: 3message: 服務 {name} 的成功率在過去10分鐘中有2分鐘低于80%。service_resp_time_percentile_rule:metrics-name: service_percentileop: ">"threshold: 1000,1000,1000,1000,1000period: 10count: 3silence-period: 5message: 服務 {name} 在過去10分鐘中有3分鐘觸發了百分位響應時間告警,p50、p75、p90、p95、p99 超過1000毫秒。service_instance_resp_time_rule:metrics-name: service_instance_resp_timeop: ">"threshold: 1000period: 10count: 2silence-period: 5message: 服務實例 {name} 的響應時間在過去10分鐘中有2分鐘超過了1000毫秒。database_access_resp_time_rule:metrics-name: database_access_resp_timethreshold: 1000op: ">"period: 10count: 2message: 數據庫訪問 {name} 的響應時間在過去10分鐘中有2分鐘超過了1000毫秒。endpoint_relation_resp_time_rule:metrics-name: endpoint_relation_resp_timethreshold: 1000op: ">"period: 10count: 2message: 端點關系 {name} 的響應時間在過去10分鐘中有2分鐘超過了1000毫秒。#  激活端點相關的指標告警會比服務和實例的告警消耗更多內存。
#  因為端點數量通常遠遠多于服務和實例。
#
#  endpoint_avg_rule:
#    metrics-name: endpoint_avg
#    op: ">"
#    threshold: 1000
#    period: 10
#    count: 2
#    silence-period: 5
#    message: 端點 {name} 的平均響應時間在過去10分鐘中有2分鐘超過了1000毫秒。webhooks:
#  - http://127.0.0.1/notify/
- 'http://10.20.8.188:8080/debug'
#  - http://127.0.0.1/go-wechat/

部署go服務器

服務器在我git上,你們不需要打包,我也懶得去打包,所有你們直接下載到pod里面運行就行

package mainimport ("github.com/gin-gonic/gin"_ "github.com/apache/skywalking-go""net/http""time"
)func main() {// 創建一個 Gin 路由實例r := gin.Default()// 立即響應的接口r.GET("/immediate", func(c *gin.Context) {// 返回立即響應的消息c.JSON(http.StatusOK, gin.H{"message": "This is an immediate response",})})// 延遲響應的接口r.GET("/delayed", func(c *gin.Context) {// 模擬延遲,等待 5 秒time.Sleep(5 * time.Second)// 延遲之后的響應c.JSON(http.StatusOK, gin.H{"message": "This response is delayed by 5 seconds",})})// 啟動 HTTP 服務,監聽在 8080 端口r.Run(":8080")
}
#!/bin/bash
go build -toolexec=/Users/mac-512/script/testpro/apache-skywalking-go-0.5.0-bin/bin/skywalking-go-agent-0.5.0-darwin-amd64 -a -ldflags="-s -w" -o testproexport SW_AGENT_NAME="testpro200"
export SW_AGENT_REPORTER_GRPC_BACKEND_SERVICE="xxx:11800"
export SW_AGENT_REPORTER_GRPC_CHECK_INTERVAL=20
./testpro

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/79331.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/79331.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/79331.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2025年- H16-Lc124-169.多數元素(技巧)---java版

1.題目描述 2.思路 3.代碼實現 import java.util.Arrays;public class H169 {public int majorityElement(int[] nums) {Arrays.sort(nums);int nnums.length;return nums[n/2];}public static void main(String[] args){H169 test07new H169();int[] nums{2,2,1,1,1,2,2};int…

k8s術語pod

Pod概覽 理解Pod Pod是kubernetes中你可以創建和部署的最小也是最簡的單位,pod代表著集群中運行的進程。 Pod中封裝著應用的容器(有的情況下是好幾個容器),存儲、獨立的網絡IP,管理容器如何運行的策略選項。Pod代表著部署的一個單位:kubemetes中應用的一個實例,可能由一個…

《數字圖像處理(面向新工科的電工電子信息基礎課程系列教材)》章節思維導圖

今天看到了幾本書的思維導圖&#xff0c;感觸頗深&#xff0c;如果思維導圖只是章節安排&#xff0c;這樣的思維導圖有毛用。 給出《數字圖像處理&#xff08;面向新工科的電工電子信息基礎課程系列教材&#xff09;》實質內容章節的思維導圖。思維導圖的優勢是邏輯關系和知識…

Nacos簡介—4.Nacos架構和原理二

大綱 1.Nacos的定位和優勢 2.Nacos的整體架構 3.Nacos的配置模型 4.Nacos內核設計之一致性協議 5.Nacos內核設計之自研Distro協議 6.Nacos內核設計之通信通道 7.Nacos內核設計之尋址機制 8.服務注冊發現模塊的注冊中心的設計原理 9.服務注冊發現模塊的注冊中心的服務數…

【MySQL】復合查詢與內外連接

目錄 一、復合查詢 1、基本查詢回顧&#xff1a; 2、多表查詢&#xff1a; 3、自連接&#xff1a; 4、子查詢&#xff1a; 單列子查詢 多行子查詢&#xff1a; 多列子查詢&#xff1a; 在from語句中使用子查詢&#xff1a; 5、合并查詢&#xff1a; union&#xff1…

后端工程師需要掌握哪些基礎技能

后端工程師是構建系統核心邏輯的關鍵角色&#xff0c;需要掌握從基礎到進階的完整技術棧。以下是結合國內實際開發需求的技能樹整理&#xff0c;附帶學習建議&#xff1a; 一、編程語言&#xff08;至少精通1-2種&#xff09; # 國內主流選擇&#xff08;按優先級排序&#x…

萬字重談C++——繼承篇

繼承的概念及定義 繼承的概念 繼承&#xff08;Inheritance&#xff09;機制作為面向對象程序設計中最核心的代碼復用方式&#xff0c;它不僅允許開發人員在保留基礎類特性的前提下進行功能擴展&#xff08;從而創建新的派生類&#xff09;&#xff0c;更重要的是體現了面向對…

移動光貓 UNG853H 獲取超級管理員賬號密碼

注&#xff1a;電腦連接光貓&#xff0c;網線不要接2口&#xff08;2口一般是IPTV網口&#xff09; 首先瀏覽器打開 192.168.1.1&#xff0c;使用光貓背面的用戶名密碼登錄。&#xff08;user用戶名&#xff09; 然后在瀏覽器中另開一個窗口打開以下地址&#xff1a; http://…

ActiveMQ 可靠性保障:消息確認與重發機制(二)

ActiveMQ 重發機制 重發機制的原理與觸發條件 ActiveMQ 的重發機制是確保消息可靠傳輸的重要手段。當消息發送到 ActiveMQ 服務器后&#xff0c;如果消費者由于某些原因未能成功處理消息&#xff0c;ActiveMQ 會依據配置的重發策略&#xff0c;將消息重新放入隊列或主題中&am…

oceanbase設置密碼

docker run -p 2881:2881 --name oceanbase-ce -e MODEmini -d oceanbase/oceanbase-ce:4.2.1.10-110010012025041414 先進入鏡像再連接數據庫的方式 進入鏡像 docker exec -it oceanbase-ce bash 修改數據庫密碼 ALTER USER ‘root’ IDENTIFIED BY ‘123456’; 無密碼 obc…

使用Python和Pandas實現的Azure Synapse Dedicated SQL pool權限檢查與SQL生成用于IT審計

下面是使用 Python Pandas 來提取和展示 Azure Synapse Dedicated SQL Pool 中權限信息的完整過程&#xff0c;同時將其功能以自然語言描述&#xff0c;并自動構造所有權限設置的 SQL 語句&#xff1a; ? 步驟 1&#xff1a;從數據庫讀取權限信息 我們從數據庫中提取與用戶、…

tiktok web X-Bogus X-Gnarly 分析

聲明 本文章中所有內容僅供學習交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包內容、敏感網址、數據接口等均已做脫敏處理&#xff0c;嚴禁用于商業用途和非法用途&#xff0c;否則由此產生的一切后果均與作者無關&#xff01; 逆向過程 部分python代碼 import req…

目標文件的段結構及核心組件詳解

目標文件&#xff08;如 .o 或 .obj&#xff09;是編譯器生成的中間文件&#xff0c;其結構遵循 ELF&#xff08;Linux&#xff09;或 COFF&#xff08;Windows&#xff09;格式。以下是其核心段&#xff08;Section&#xff09;和關鍵機制的詳細解析&#xff1a; 1. 目標文件的…

【軟件設計師:復習】上午題核心知識點總結(一)

一、數據結構與算法(高頻) 1. 線性數據結構 數組與鏈表 數組:隨機訪問(O(1))、插入/刪除(O(n))、內存連續。鏈表:單向鏈表、雙向鏈表、循環鏈表;插入/刪除(O(1))、隨機訪問(O(n))。典型問題: 合并兩個有序鏈表(LeetCode 21)。鏈表反轉(迭代/遞歸實現)。棧與…

【ROS2】 核心概念2——功能包package

官方英文文檔&#xff1a;Creating a package — ROS 2 Documentation: Humble documentation 中文參考&#xff1a;古月ROS2 功能包講解 - 圖書資源 省流&#xff0c;就學習一個命令 ros2 pkg create --build-type <build-type> <package_name> ROS2的重要概念…

Java內存對象實現聚合查詢

文章目錄 什么是聚合查詢excel表格演示插入透視表透視表操作 sql聚合查詢創建表和插入數據按照國家業務類型設備類型統計總銷量按設備類型統計總銷量 Java內存對象聚合查詢普通對象方式創建對象聚合查詢條件查詢方法調用方式結果 Record對象方式Recor對象創建對象聚合查詢條件查…

VSCode開發調試Python入門實踐(Windows10)

我的Windows10上的python環境是免安裝直接解壓的Python3.8.x老版本&#xff0c;可參見《Windows下Python3.8環境快速安裝部署。 1. 安裝VSCode 在Windows 10系統上安裝Visual Studio Code&#xff08;VS Code&#xff09;是一個簡單的過程&#xff0c;以下是詳細的安裝方法與…

Tomcat DOS漏洞復現(CVE-2025-31650)

免責申明: 本文所描述的漏洞及其復現步驟僅供網絡安全研究與教育目的使用。任何人不得將本文提供的信息用于非法目的或未經授權的系統測試。作者不對任何由于使用本文信息而導致的直接或間接損害承擔責任。如涉及侵權,請及時與我們聯系,我們將盡快處理并刪除相關內容。 前…

使用Qt QAxObject解決Visual Fox Pro數據庫亂碼問題

文章目錄 使用Qt QAxObject解決Visual Fox Pro數據庫亂碼問題一、問題背景&#xff1a;ODBC讀取DBF文件的編碼困境二、核心方案&#xff1a;通過QAxObject調用ADO操作DBF1. 技術選型&#xff1a;為什么選擇ADO&#xff1f;2. 核心代碼解析&#xff1a;QueryDataByAdodb函數3. 連…

HTTP知識速通

一.HTTP的基礎概念 首先了解HTTP協議&#xff0c;他是目前主要使用在應用層的一種協議 http被稱為超文本傳輸協議 而https則是安全的超文本傳輸協議 本章節的內容首先就是對http做一個簡單的了解。 HTTP是一種應用層協議&#xff0c;是基于TCP/IP協議來傳遞信息的。 其中…