91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

配置Skywalking告警

馬哥Linux運(yùn)維 ? 來(lái)源:馬哥Linux運(yùn)維 ? 2025-01-16 10:58 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

目錄

OpenTracing規(guī)范

為什么需要OpenTracing

什么是一個(gè)Trace

一個(gè)典型的Trace案例

Skywalking

功能介紹

整體架構(gòu)

Tracing、Logging和Metrics

.NET6 對(duì)接 Skywalking

添加依賴

編輯Skywalking配置文件skyapm.json

在launchSettings.json文件配置SK

在startup.cs文件中添加

安裝CLI(SkyAPM.DotNet.CLI)

自動(dòng)生成skyapm.json文件

手動(dòng)編寫(xiě)skyapm.json

自動(dòng)生成Skyapm.json

獲取traceId

自定義調(diào)用鏈路的信息

部署Skywalking環(huán)境

對(duì)接.NET6 程序

接入微服務(wù)網(wǎng)關(guān)+后臺(tái)微服務(wù)

添加依賴

拷貝配置文件并簡(jiǎn)單修改

在launchsettings.json添加環(huán)境變量

啟動(dòng)訂單微服務(wù)

添加依賴

拷貝配置文件并簡(jiǎn)單修改

在launchsettings.json添加環(huán)境變量

修改網(wǎng)關(guān)配置文件,添加OrderServiceInstance微服務(wù)的路由

啟動(dòng)網(wǎng)關(guān)

網(wǎng)關(guān)接入

訂單微服務(wù)接入

用戶微服務(wù)接入

配置Skywalking告警

配置告警規(guī)則

查閱配置規(guī)則文件及配置規(guī)則解讀

修改告警規(guī)則

告警API編寫(xiě)

OpenTracing規(guī)范

OpenTracing是一種分布式系統(tǒng)鏈路跟蹤的設(shè)計(jì)原則、規(guī)范、標(biāo)準(zhǔn)。類(lèi)似JDBC的規(guī)范,主要為了提供一套標(biāo)準(zhǔn)的JDBC API。OpenTracing也是一樣,是為了統(tǒng)一提供一套鏈路追蹤的標(biāo)準(zhǔn)API,所制定的一種規(guī)范。OpenTracing通過(guò)提供平臺(tái)無(wú)關(guān)、廠商無(wú)關(guān)的API,使得開(kāi)發(fā)人員能夠方便的添加(或更換)追蹤系統(tǒng)的實(shí)現(xiàn)。

為什么需要OpenTracing

OpenTracing通過(guò)提供平臺(tái)無(wú)關(guān)、廠商無(wú)關(guān)的API,使得開(kāi)發(fā)人員能夠方便的添加(或更換)追蹤系統(tǒng)的實(shí)現(xiàn)。 OpenTracing提供了用于運(yùn)營(yíng)支撐系統(tǒng)的和針對(duì)特定平臺(tái)的輔助程序庫(kù)。

什么是一個(gè)Trace

在廣義上,一個(gè)trace代表了一個(gè)事務(wù)或者流程在(分布式)系統(tǒng)中的執(zhí)行過(guò)程。在OpenTracing標(biāo)準(zhǔn)中,trace是多個(gè)span組成的一個(gè)有向無(wú)環(huán)圖(DAG),每一個(gè)span代表trace中被命名并計(jì)時(shí)的連續(xù)性的執(zhí)行片段。

0d2fe81c-d32c-11ef-9310-92fbcf53809c.png

分布式追蹤中的每個(gè)組件都包含自己的一個(gè)或者多個(gè)span。例如,在一個(gè)常規(guī)的RPC調(diào)用過(guò)程中,OpenTracing推薦在RPC的客戶端和服務(wù)端,至少各有一個(gè)span,用于記錄RPC調(diào)用的客戶端和服務(wù)端信息。

0d42c360-d32c-11ef-9310-92fbcf53809c.png

一個(gè)父級(jí)的span會(huì)顯示的并行或者串行啟動(dòng)多個(gè)子span。在OpenTracing標(biāo)準(zhǔn)中,甚至允許一個(gè)子span有個(gè)多父span(例如:并行寫(xiě)入的緩存,可能通過(guò)一次刷新操作寫(xiě)入動(dòng)作)。

一個(gè)典型的Trace案例

0d50782a-d32c-11ef-9310-92fbcf53809c.png

在一個(gè)分布式系統(tǒng)中,追蹤一個(gè)事務(wù)或者調(diào)用流一般如上圖所示。雖然這種圖對(duì)于看清各組件的組合關(guān)系是很有用的,但是,它不能很好顯示組件的調(diào)用時(shí)間,是串行調(diào)用還是并行調(diào)用,如果展現(xiàn)更復(fù)雜的調(diào)用關(guān)系,會(huì)更加復(fù)雜,甚至無(wú)法畫(huà)出這樣的圖。另外,這種圖也無(wú)法顯示調(diào)用間的時(shí)間間隔以及是否通過(guò)定時(shí)調(diào)用來(lái)啟動(dòng)調(diào)用。一種更有效的展現(xiàn)一個(gè)典型的trace過(guò)程,如下圖所示:

0d5fbed4-d32c-11ef-9310-92fbcf53809c.png

這種展現(xiàn)方式增加顯示了執(zhí)行時(shí)間的上下文,相關(guān)服務(wù)間的層次關(guān)系,進(jìn)程或者任務(wù)的串行或并行調(diào)用關(guān)系。這樣的視圖有助于發(fā)現(xiàn)系統(tǒng)調(diào)用的關(guān)鍵路徑。通過(guò)關(guān)注關(guān)鍵路徑的執(zhí)行過(guò)程,項(xiàng)目團(tuán)隊(duì)可能專注于優(yōu)化路徑中的關(guān)鍵位置,最大幅度的提升系統(tǒng)性能。例如:可以通過(guò)追蹤一個(gè)資源定位的調(diào)用情況,明確底層的調(diào)用情況,發(fā)現(xiàn)哪些操作有阻塞的情況。

Skywalking

Skywalking是一款A(yù)PM(Application Performance Management & Monitoring)系統(tǒng)。Skywalking是分布式系統(tǒng)應(yīng)用程序性能監(jiān)視工具,專為微服務(wù)、云原生架構(gòu)和基于容器(Docker、K8s、Mesos)架構(gòu)而設(shè)計(jì)。提供分布式追蹤、服務(wù)網(wǎng)格遙測(cè)分析、度量聚合和可視化一體化解決方案。

功能介紹

多種監(jiān)控手段??梢酝ㄟ^(guò)語(yǔ)言探針和 service mesh 獲得監(jiān)控是數(shù)據(jù)。

多個(gè)語(yǔ)言自動(dòng)探針。包括 Java,.NET Core 和 Node.JS。

輕量高效。無(wú)需大數(shù)據(jù)平臺(tái),和大量的服務(wù)器資源。

模塊化。UI、存儲(chǔ)、集群管理都有多種機(jī)制可選。

支持告警。

優(yōu)秀的可視化解決方案。

整體架構(gòu)

0d72143a-d32c-11ef-9310-92fbcf53809c.png

整個(gè)架構(gòu),分成上、下、左、右四部分:

探針基于不同的來(lái)源可能是不一樣的, 但作用都是收集數(shù)據(jù), 將數(shù)據(jù)格式化為 SkyWalking 適用的格式.

平臺(tái)后端是一個(gè)支持集群模式運(yùn)行的后臺(tái), 用于數(shù)據(jù)聚合, 數(shù)據(jù)分析以及驅(qū)動(dòng)數(shù)據(jù)流從探針到用戶界面的流程. 平臺(tái)后端還提供了各種可插拔的能力, 如不同來(lái)源數(shù)據(jù)(如來(lái)自 Zipkin)格式化, 不同存儲(chǔ)系統(tǒng)以及集群管理. 你甚至還可以使用觀測(cè)分析語(yǔ)言來(lái)進(jìn)行自定義聚合分析.

存儲(chǔ)是開(kāi)放式的. 你可以選擇一個(gè)既有的存儲(chǔ)系統(tǒng), 如 ElasticSearch, H2 或 MySQL 集群(Sharding-Sphere 管理), 也可以選擇自己實(shí)現(xiàn)一個(gè)存儲(chǔ)系統(tǒng). 當(dāng)然, 我們非常歡迎你貢獻(xiàn)新的存儲(chǔ)系統(tǒng)實(shí)現(xiàn).

用戶界面對(duì)于 SkyWalking 的最終用戶來(lái)說(shuō)非常炫酷且強(qiáng)大. 同樣它也是可定制以匹配你已存在的后端的

Tracing、Logging和Metrics

在微服務(wù)領(lǐng)域,很早以來(lái)就形成了Tracing、Logging和Metrics相輔相成,合力支撐多維度、多形態(tài)的監(jiān)控體系,三類(lèi)監(jiān)控各有側(cè)重:

Tracing:它在單次請(qǐng)求的范圍內(nèi),處理信息。 任何的數(shù)據(jù)、元數(shù)據(jù)信息都被綁定到系統(tǒng)中的單個(gè)事務(wù)上。例如:一次調(diào)用遠(yuǎn)程服務(wù)的RPC執(zhí)行過(guò)程;一次實(shí)際的SQL查詢語(yǔ)句;一次HTTP請(qǐng)求的業(yè)務(wù)性ID;

Logging:日志,不知道大家有沒(méi)有想過(guò)它的定義或者邊界。Logging即是記錄處理的離散事件,比如我們應(yīng)用的調(diào)試信息或者錯(cuò)誤信息等發(fā)送到ES;審計(jì)跟蹤時(shí)間信息通過(guò)Kafka處理送到BigTable等數(shù)據(jù)倉(cāng)儲(chǔ)等等,大多數(shù)情況下記錄的數(shù)據(jù)很分散,并且相互獨(dú)立,也許是錯(cuò)誤信息,也許僅僅只是記錄當(dāng)前的事件狀態(tài),或者是警告信息等等。

Metrics:當(dāng)我們想知道我們服務(wù)的請(qǐng)求QPS是多少,或者當(dāng)天的用戶登錄次數(shù)等等,這時(shí)我們可能需要將一部分事件進(jìn)行聚合或計(jì)數(shù),也就是我們說(shuō)的Metrics??删酆闲约词荕etrics的特征,它們是一段時(shí)間內(nèi)某個(gè)度量(計(jì)數(shù)器或者直方圖)的原子或者是元數(shù)據(jù)。例如接收的HTTP數(shù)量可以被建模為計(jì)數(shù)器,每次的HTTP請(qǐng)求即是我們的度量元數(shù)據(jù),可以進(jìn)行簡(jiǎn)單的加法聚合,當(dāng)持續(xù)了一段時(shí)間我們又可以建模為直方圖。

0d829b02-d32c-11ef-9310-92fbcf53809c.png

.NET6 對(duì)接 Skywalking

部署Skywalking環(huán)境

version: '3.3'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.5.0
    container_name: elasticsearch
    restart: always
    ports:
      - 9200:9200
    environment:
      - discovery.type=single-node
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
  oap:
    image: apache/skywalking-oap-server:6.6.0-es7
    container_name: oap
    depends_on:
      - elasticsearch
    links:
      - elasticsearch
    restart: always
    ports:
      - 11800:11800
      - 12800:12800
    environment:
      SW_STORAGE: elasticsearch
      SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
  ui:
    image: apache/skywalking-ui:6.6.0
    container_name: ui
    depends_on:
      - oap
    links:
      - oap
    restart: always
    ports:
      - 8080:8080
    environment:
      SW_OAP_ADDRESS: http://oap:12800

安裝成功以后首頁(yè)地址:http://服務(wù)器IP:8080

對(duì)接.NET6 程序

添加依賴


    

編輯Skywalking配置文件skyapm.json

手動(dòng)編寫(xiě)skyapm.json

{
  "SkyWalking": {
    "ServiceName": "MySkyWalkingDemoTest",
    "Namespace": "",
    "HeaderVersions": [
      "sw8"
    ],
    "Sampling": {
      "SamplePer3Secs": -1,
      "Percentage": -1.0
    },
    "Logging": {
      "Level": "Information",
      "FilePath": "logs\skyapm-{Date}.log"
    },
    "Transport": {
      "Interval": 3000,
      "ProtocolVersion": "v8",
      "QueueSize": 30000,
      "BatchSize": 3000,
      "gRPC": {
        "Servers": "192.168.3.245:11800",
        "Timeout": 10000,
        "ConnectTimeout": 10000,
        "ReportTimeout": 600000,
        "Authentication": ""
      }
    }
  }
}

自動(dòng)生成Skyapm.json

安裝CLI(SkyAPM.DotNet.CLI)

 dotnet tool install -g SkyAPM.DotNet.CLI

自動(dòng)生成skyapm.json文件

server name指的就是您剛才配置的SKYWALKING__SERVICENAME,server指的是您Skywalking的ip地址。執(zhí)行命令后,會(huì)自動(dòng)生成一個(gè)skywalking.json 。

 dotnet skyapm config [service name] [server]:11800
 #eg: dotnet skyapm config MySkyWalking_OrderService 192.168.3.245:11800

SkyAPM Config 配置說(shuō)明

ServiceName
服務(wù)名稱

Sampling
采樣配置節(jié)點(diǎn)

SamplePer3Secs 每3秒采樣數(shù)

Percentage 采樣百分比,例如10%采樣則配置為10

Logging
日志配置節(jié)點(diǎn)

Level 日志級(jí)別

FilePath 日志保存路徑

Transport

傳輸配置節(jié)點(diǎn)

Interval 每多少毫秒刷新

gRPC
gRPC配置節(jié)點(diǎn)

Servers gRPC地址,多個(gè)用逗號(hào)“,”

Timeout 創(chuàng)建gRPC鏈接的超時(shí)時(shí)間,毫秒

ConnectTimeout gRPC最長(zhǎng)鏈接時(shí)間,毫秒

在launchSettings.json文件配置SK

"profiles": { // 項(xiàng)目
    "IIS Express": { // IIS部署項(xiàng)
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "weatherforecast",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "SkyAPM.Agent.AspNetCore",
        "SKYWALKING__SERVICENAME": "MySkyWalkingDemoTest"
      }
    },
    "SkyWalkingDemo": { // castrol部署項(xiàng)
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "weatherforecast",
      "applicationUrl": "http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "SkyAPM.Agent.AspNetCore", // 必須配置
        "SKYWALKING__SERVICENAME": "MySkyWalkingDemoTest" // 必須配置,在skywalking做標(biāo)識(shí)
      }
    }
  }

在startup.cs文件中添加

public void ConfigureServices(IServiceCollection services)
{
    services.AddSkyApmExtensions(); // 添加Skywalking相關(guān)配置
    services.AddControllers();
    services.AddHttpClient();
}

獲取traceId

private readonly IEntrySegmentContextAccessor segContext;

public SkywalkingController(IEntrySegmentContextAccessor segContext)
{
    this.segContext = segContext;
}

/// 
/// 獲取鏈接追蹤ID
/// 
/// 
[HttpGet("traceId")]
public string GetSkywalkingTraceId()
{
    return segContext.Context.TraceId;
}

自定義調(diào)用鏈路的信息

[HttpGet]
public async Task SkywalkingTest()
{
    //獲取全局的skywalking的TracId
    var TraceId = _segContext.Context.TraceId;
    Console.WriteLine($"TraceId={TraceId}");
    _segContext.Context.Span.AddLog(LogEvent.Message($"SkywalkingTest---Worker running at: {DateTime.Now}"));

    System.Threading.Thread.Sleep(1000);

    _segContext.Context.Span.AddLog(LogEvent.Message($"SkywalkingTest---Worker running at--end: {DateTime.Now}"));

    return Ok($"Ok,SkywalkingTest-TraceId={TraceId} ");
}

接入微服務(wù)網(wǎng)關(guān)+后臺(tái)微服務(wù)

網(wǎng)關(guān)接入

添加依賴


    

拷貝配置文件并簡(jiǎn)單修改

{
  "SkyWalking": {
    "ServiceName": "MySkyWalking_Gateway", #修改名稱就OK
    "Namespace": "",
    "HeaderVersions": [
      "sw8"
    ],
    "Sampling": {
      "SamplePer3Secs": -1,
      "Percentage": -1.0
    },
    "Logging": {
      "Level": "Debug",
      "FilePath": "logs\skyapm-{Date}.log"
    },
    "Transport": {
      "Interval": 3000,
      "ProtocolVersion": "v8",
      "QueueSize": 30000,
      "BatchSize": 3000,
      "gRPC": {
        "Servers": "192.168.3.245:11800",
        "Timeout": 10000,
        "ConnectTimeout": 10000,
        "ReportTimeout": 600000,
        "Authentication": ""
      }
    }
  }
}

在launchsettings.json添加環(huán)境變量

"profiles": {
    "Zhaoxi.MicroService.GatewayCenter": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "launchUrl": "swagger",
      "applicationUrl": "https://localhost:7141;http://localhost:5141",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "SkyAPM.Agent.AspNetCore", #添加HOST變量
        "SKYWALKING__SERVICENAME": "MySkyWalking_Gateway" #添加服務(wù)名稱
      }
    },
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "swagger",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "SkyAPM.Agent.AspNetCore",
        "SKYWALKING__SERVICENAME": "MySkyWalking_Gateway"
      }
    }
  }

修改網(wǎng)關(guān)配置文件,添加OrderServiceInstance微服務(wù)的路由

{
    "DownstreamPathTemplate": "/api/{url}", //服務(wù)地址--url變量
    "DownstreamScheme": "http",
    "UpstreamPathTemplate": "/microservice/{url}", //網(wǎng)關(guān)地址--url變量
    "UpstreamHttpMethod": [ "Get", "Post" ],
    "UseServiceDiscovery": true,
    "ServiceName": "OrderService", //consul服務(wù)名稱
    "LoadBalancerOptions": {
        "Type": "RoundRobin" //輪詢
}

啟動(dòng)網(wǎng)關(guān)

dotnet run --urls=http://*:6299

訂單微服務(wù)接入

添加依賴


    

拷貝配置文件并簡(jiǎn)單修改

{
  "SkyWalking": {
    "ServiceName": "MySkyWalking_OrderService",
    "Namespace": "",
    "HeaderVersions": [
      "sw8"
    ],
    "Sampling": {
      "SamplePer3Secs": -1,
      "Percentage": -1.0
    },
    "Logging": {
      "Level": "Debug",
      "FilePath": "logs\skyapm-{Date}.log"
    },
    "Transport": {
      "Interval": 3000,
      "ProtocolVersion": "v8",
      "QueueSize": 30000,
      "BatchSize": 3000,
      "gRPC": {
        "Servers": "192.168.3.245:11800",
        "Timeout": 10000,
        "ConnectTimeout": 10000,
        "ReportTimeout": 600000,
        "Authentication": ""
      }
    }
  }
}

在launchsettings.json添加環(huán)境變量

"profiles": {
    "Zhaoxi.MicroService.OrderServiceInstance": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "launchUrl": "swagger",
      "applicationUrl": "http://192.168.3.105:7900",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "SkyAPM.Agent.AspNetCore",
        "SKYWALKING__SERVICENAME": "MySkyWalking_OrderService"
      }
    },
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "swagger",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }

啟動(dòng)訂單微服務(wù)

dotnet run

用戶微服務(wù)接入

步驟和訂單微服務(wù)一樣

配置Skywalking告警

配置告警規(guī)則

docker exec -it 12f053748e85 /bin/sh
ls -l

0d985e88-d32c-11ef-9310-92fbcf53809c.png

查閱配置規(guī)則文件及配置規(guī)則解讀

通過(guò)cat alarm-settings.yml可以查閱文件內(nèi)容,如下:

docker cp 12f053748e85:/skywalking/config/alarm-settings.yml .
# Sample alarm rules.
rules:
  # Rule unique name, must be ended with `_rule`.
  service_resp_time_rule:
    metrics-name: service_resp_time
    op: ">"
    threshold: 1000
    period: 10
    count: 3
    silence-period: 5
    message: Response time of service {name} is more than 1000ms in 3 minutes of last 10 minutes.
  service_sla_rule:
    # Metrics value need to be long, double or int
    metrics-name: service_sla
    op: "<"
    threshold: 8000
    # The length of time to evaluate the metrics
    period: 10
    # How many times after the metrics match the condition, will trigger alarm
    count: 2
    # How many times of checks, the alarm keeps silence after alarm triggered, default as same as period.
    silence-period: 3
    message: Successful rate of service {name} is lower than 80% in 2 minutes of last 10 minutes
  service_resp_time_percentile_rule:
    # Metrics value need to be long, double or int
    metrics-name: service_percentile
    op: ">"
    threshold: 1000,1000,1000,1000,1000
    period: 10
    count: 3
    silence-period: 5
    message: Percentile response time of service {name} alarm in 3 minutes of last 10 minutes, due to more than one condition of p50 > 1000, p75 > 1000, p90 > 1000, p95 > 1000, p99 > 1000
  service_instance_resp_time_rule:
    metrics-name: service_instance_resp_time
    op: ">"
    threshold: 1000
    period: 10
    count: 2
    silence-period: 5
    message: Response time of service instance {name} is more than 1000ms in 2 minutes of last 10 minutes
  database_access_resp_time_rule:
    metrics-name: database_access_resp_time
    threshold: 1000
    op: ">"
    period: 10
    count: 2
    message: Response time of database access {name} is more than 1000ms in 2 minutes of last 10 minutes
  endpoint_relation_resp_time_rule:
    metrics-name: endpoint_relation_resp_time
    threshold: 1000
    op: ">"
    period: 10
    count: 2
    message: Response time of endpoint relation {name} is more than 1000ms in 2 minutes of last 10 minutes
#  Active endpoint related metrics alarm will cost more memory than service and service instance metrics alarm.
#  Because the number of endpoint is much more than service and instance.
#
#  endpoint_avg_rule:
#    metrics-name: endpoint_avg
#    op: ">"
#    threshold: 1000
#    period: 10
#    count: 2
#    silence-period: 5
#    message: Response time of endpoint {name} is more than 1000ms in 2 minutes of last 10 minutes

webhooks:
#  - http://127.0.0.1/notify/
#  - http://127.0.0.1/go-wechat/

規(guī)則常用指標(biāo)解讀
rule name: 規(guī)則名稱,必須唯一,必須以_rule結(jié)尾;
metrics name: oal(Observability Analysis Language)腳本中的度量名;名稱在SkyWalking后端服務(wù)中已經(jīng)定義,進(jìn)入容器skywalking-oap之后,進(jìn)入如下目錄就可以找到。

include names: 本規(guī)則告警生效的實(shí)體名稱,如服務(wù)名,終端名;
exclude-names:將此規(guī)則作用于不匹配的實(shí)體名稱上,如服務(wù)名,終端名;
threshold: 閾值,可以是一個(gè)數(shù)組,即可以配置多個(gè)值;
op: 操作符, 可以設(shè)定 >, <, =;
period: 多久檢查一次當(dāng)前的指標(biāo)數(shù)據(jù)是否符合告警規(guī)則;以分鐘為單位
count: 超過(guò)閾值條件,達(dá)到count次數(shù),觸發(fā)告警;
silence period:在同一個(gè)周期,指定的silence period時(shí)間內(nèi),忽略相同的告警消息;
更多告警規(guī)則詳情,請(qǐng)參照這個(gè)地址:https://github.com/apache/skywalking/blob/master/docs/en/setup/backend/backend-alarm.md

修改告警規(guī)則

rules:
service_test_sal_rule:
# 指定指標(biāo)名稱
    metrics-name: service_test_sal
    # 小于
    op: "<"
    # 指定閾值
    threshold: 8000
    # 每2分鐘檢測(cè)告警該規(guī)則
    period: 2
    # 觸發(fā)1次規(guī)則就告警
    count: 1
    # 設(shè)置三分鐘內(nèi)容相同告警,不重復(fù)告警
    silence-period: 3
    # 配置告警信息
    message: Successful rate of service {name} is lower than 80% in 2 minutes of last 10 minutes

概要:服務(wù)成功率在過(guò)去2分鐘內(nèi)低于80%

告警API編寫(xiě)

本質(zhì)還是SkyWalking根據(jù)規(guī)則進(jìn)行檢查,如果符合規(guī)則條件,就通過(guò)WebHook、gRPCHook、WeChat Hook、Dingtalk Hook等方式進(jìn)行消息通知;接收到告警數(shù)據(jù)信息之后,可以自行處理消息。這里為了方便,就采用WebHook的方式進(jìn)行演示,即觸發(fā)告警條件之后,SkyWalking會(huì)調(diào)用配置的WebHook 接口,并傳遞對(duì)應(yīng)的告警信息;

定義數(shù)據(jù)模型

public class AlarmMsg
{
    public int scopeId { get; set; }
    public string? scope { get; set; }
    public string? name { get; set; }
    public string? id0 { get; set; }
    public string? id1 { get; set; }
    public string? ruleName { get; set; }
    public string? alarmMessage { get; set; }
}

定義WebHook調(diào)用API

/// 
/// 告警API
/// 
/// 
/// 
[HttpPost("AlarmMsg")]
public void AlarmMsg(List msgs)
{
    string msg = "觸發(fā)告警:";
    msg += msgs.FirstOrDefault()?.alarmMessage;
    Console.WriteLine(msg);
    SendMail(msg);
}

配置webHook

http://192.168.3.105:7900/api/Skywalking/AlarmMsg
# Sample alarm rules.
rules:
  # Rule unique name, must be ended with `_rule`.
  service_resp_time_rule:
    metrics-name: service_resp_time
    op: ">"
    threshold: 1000
    period: 10
    count: 3
    silence-period: 5
    message: Response time of service {name} is more than 1000ms in 3 minutes of last 10 minutes.
  service_sla_rule:
    # Metrics value need to be long, double or int
    metrics-name: service_sla
    op: "<"
    threshold: 8000
    # The length of time to evaluate the metrics
    period: 10
    # How many times after the metrics match the condition, will trigger alarm
    count: 2
    # How many times of checks, the alarm keeps silence after alarm triggered, default as same as period.
    silence-period: 3
    message: Successful rate of service {name} is lower than 80% in 2 minutes of last 10 minutes
  service_resp_time_percentile_rule:
    # Metrics value need to be long, double or int
    metrics-name: service_percentile
    op: ">"
    threshold: 1000,1000,1000,1000,1000
    period: 10
    count: 3
    silence-period: 5
    message: Percentile response time of service {name} alarm in 3 minutes of last 10 minutes, due to more than one condition of p50 > 1000, p75 > 1000, p90 > 1000, p95 > 1000, p99 > 1000
  service_instance_resp_time_rule:
    metrics-name: service_instance_resp_time
    op: ">"
    threshold: 1000
    period: 10
    count: 2
    silence-period: 5
    message: Response time of service instance {name} is more than 1000ms in 2 minutes of last 10 minutes
  database_access_resp_time_rule:
    metrics-name: database_access_resp_time
    threshold: 1000
    op: ">"
    period: 10
    count: 2
    message: Response time of database access {name} is more than 1000ms in 2 minutes of last 10 minutes
  endpoint_relation_resp_time_rule:
    metrics-name: endpoint_relation_resp_time
    threshold: 1000
    op: ">"
    period: 10
    count: 2
    message: Response time of endpoint relation {name} is more than 1000ms in 2 minutes of last 10 minutes
#  Active endpoint related metrics alarm will cost more memory than service and service instance metrics alarm.
#  Because the number of endpoint is much more than service and instance.
#
#  endpoint_avg_rule:
#    metrics-name: endpoint_avg
#    op: ">"
#    threshold: 1000
#    period: 10
#    count: 2
#    silence-period: 5
#    message: Response time of endpoint {name} is more than 1000ms in 2 minutes of last 10 minutes

webhooks:
  - http://192.168.3.105:7900/api/Skywalking/AlarmMsg
#  - http://127.0.0.1/go-wechat/
rules:
  # 告警規(guī)則名稱,必須唯一,以_rule結(jié)尾
  service_sla_rule:
     # 指定metrics-name
     metrics-name: service_sla
     # 小于
     op: "<" 
     # 指定閾值
     threshold: 8000                                                                           
     # 10分鐘檢測(cè)一次告警規(guī)則                                                 
     period: 10                                                                                 
     # 觸發(fā)2次告警規(guī)則就告警                   
     count: 2                                                                                   
     # 設(shè)置的3分鐘時(shí)間段有相同的告警,不重復(fù)告警.
     silence-period: 3 
      # 配置告警消息
     message: Successful rate of service {name} is lower than 80% in 2 minutes of last 10 minutes
webhooks:
- http://192.168.3.105:7900/api/Skywalking/AlarmMsg

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 網(wǎng)關(guān)
    +關(guān)注

    關(guān)注

    9

    文章

    6770

    瀏覽量

    56257
  • Trace
    +關(guān)注

    關(guān)注

    0

    文章

    20

    瀏覽量

    11021

原文標(biāo)題:配置Skywalking告警

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Prometheus告警規(guī)則編寫(xiě)與Alertmanager通知配置實(shí)戰(zhàn)

    監(jiān)控系統(tǒng)搭完了,指標(biāo)也采集上來(lái)了,但如果沒(méi)有告警,等于白搭。我見(jiàn)過(guò)不少團(tuán)隊(duì)Prometheus跑得好好的,Grafana大屏也掛在墻上,結(jié)果凌晨3點(diǎn)數(shù)據(jù)庫(kù)磁盤(pán)寫(xiě)滿了,第二天早上用戶投訴才發(fā)現(xiàn)。監(jiān)控不閉環(huán),就是擺設(shè)。
    的頭像 發(fā)表于 02-26 16:35 ?224次閱讀

    如何控制告警聲音,或者實(shí)現(xiàn)長(zhǎng)鳴告警?

    如何控制告警聲音,或者實(shí)現(xiàn)長(zhǎng)鳴告警?
    發(fā)表于 01-20 17:10

    電能質(zhì)量在線監(jiān)測(cè)裝置的多級(jí)告警閾值功能是如何實(shí)現(xiàn)的?

    電能質(zhì)量在線監(jiān)測(cè)裝置的多級(jí)告警閾值功能通過(guò) “硬件采集 - 軟件計(jì)算 - 閾值比對(duì) - 智能觸發(fā) - 分級(jí)響應(yīng)” 的全鏈路閉環(huán)實(shí)現(xiàn),核心是為不同電能質(zhì)量指標(biāo)設(shè)置差異化閾值與響應(yīng)策略,適配異常嚴(yán)重程度
    的頭像 發(fā)表于 12-10 14:32 ?495次閱讀
    電能質(zhì)量在線監(jiān)測(cè)裝置的多級(jí)<b class='flag-5'>告警</b>閾值功能是如何實(shí)現(xiàn)的?

    電能質(zhì)量在線監(jiān)測(cè)裝置可設(shè)置多級(jí)告警閾值嗎?

    電能質(zhì)量在線監(jiān)測(cè)裝置可以設(shè)置多級(jí)告警閾值 ,這是其核心功能之一,廣泛應(yīng)用于工業(yè)生產(chǎn)、電網(wǎng)運(yùn)維等場(chǎng)景,以實(shí)現(xiàn)差異化的異常響應(yīng)與精準(zhǔn)預(yù)警。 一、多級(jí)告警閾值的基本配置能力 全參數(shù)覆蓋 :可針對(duì) 所有電能
    的頭像 發(fā)表于 12-10 14:05 ?436次閱讀
    電能質(zhì)量在線監(jiān)測(cè)裝置可設(shè)置多級(jí)<b class='flag-5'>告警</b>閾值嗎?

    電能質(zhì)量在線監(jiān)測(cè)裝置故障會(huì)發(fā)微信告警嗎?

    電能質(zhì)量在線監(jiān)測(cè)裝置本身通常不直接發(fā)送微信告警,但通過(guò)配套的云平臺(tái) / 運(yùn)維系統(tǒng)并結(jié)合網(wǎng)絡(luò)通信,可實(shí)現(xiàn)微信告警功能 ,將故障信息實(shí)時(shí)推送給相關(guān)運(yùn)維人員。 一、微信告警的實(shí)現(xiàn)方式 實(shí)現(xiàn)層級(jí) 具體說(shuō)明
    的頭像 發(fā)表于 12-05 14:58 ?397次閱讀

    恒訊科技解析:服務(wù)器監(jiān)控與告警設(shè)置—企業(yè)必備指南

    一、為什么企業(yè)必須配置服務(wù)器監(jiān)控和告警 要是沒(méi)有監(jiān)控系統(tǒng),企業(yè),就只能在故障出現(xiàn)之后,才發(fā)覺(jué)問(wèn)題,進(jìn)而造成業(yè)務(wù)方面的損失。恒訊科技長(zhǎng)期服務(wù)企業(yè)客戶發(fā)現(xiàn)超八成的服務(wù)器故障,借助監(jiān)控與告警機(jī)制可提前察覺(jué)
    的頭像 發(fā)表于 11-25 17:42 ?655次閱讀

    交換機(jī)CPU CoS隊(duì)列沖突告警問(wèn)題

    某地反饋ZXR10 5960X交換機(jī)一直顯示如下告警,每10分鐘出現(xiàn)一次。
    的頭像 發(fā)表于 11-08 10:11 ?887次閱讀
    交換機(jī)CPU CoS隊(duì)列沖突<b class='flag-5'>告警</b>問(wèn)題

    宏集分享 | 集中告警管理如何提升設(shè)施安全性?

    提高團(tuán)隊(duì)響應(yīng)速度,優(yōu)化維護(hù)運(yùn)營(yíng)在工業(yè)或商業(yè)建筑中,集中告警管理已成為確保安全性或檢測(cè)故障的必備工具。通過(guò)將所有安全系統(tǒng)集中管理,企業(yè)能夠?qū)⑺?b class='flag-5'>告警統(tǒng)一在一個(gè)HMI界面中,大幅提升響應(yīng)速度。關(guān)鍵要點(diǎn)
    的頭像 發(fā)表于 08-08 18:25 ?521次閱讀
    宏集分享 | 集中<b class='flag-5'>告警</b>管理如何提升設(shè)施安全性?

    工業(yè)設(shè)備告警管理平臺(tái)具備有什么功能

    工業(yè)設(shè)備告警管理平臺(tái)通過(guò)整合設(shè)備數(shù)據(jù)、優(yōu)化告警邏輯、強(qiáng)化協(xié)同響應(yīng),構(gòu)建了覆蓋“監(jiān)測(cè)-分析-處置-優(yōu)化”全流程的智能化管理體系,其核心功能可歸納為以下五大模塊: 一、多源數(shù)據(jù)集成與實(shí)時(shí)監(jiān)測(cè) 設(shè)備接入
    的頭像 發(fā)表于 08-08 14:48 ?586次閱讀

    EM儲(chǔ)能網(wǎng)關(guān) ZWS智慧儲(chǔ)能云應(yīng)用(18) — 電站告警

    導(dǎo)致設(shè)備損壞或停機(jī)事故,造成行業(yè)經(jīng)濟(jì)損失,在此背景下,ZWS智慧儲(chǔ)能云平臺(tái)的電站告警功能應(yīng)運(yùn)而生。作為云平臺(tái)的核心模塊,電站告警功能最初以高自由度配置為設(shè)計(jì)理念,
    的頭像 發(fā)表于 07-25 11:35 ?453次閱讀
    EM儲(chǔ)能網(wǎng)關(guān) ZWS智慧儲(chǔ)能云應(yīng)用(18) — 電站<b class='flag-5'>告警</b>

    M6000-S License授權(quán)失效告警問(wèn)題

    某網(wǎng)絡(luò)中入網(wǎng)一臺(tái)ZXR10 M6000-18S設(shè)備,運(yùn)行一段時(shí)間后發(fā)現(xiàn)如下告警,提示License授權(quán)即將過(guò)期。
    的頭像 發(fā)表于 07-25 09:41 ?580次閱讀
    M6000-S License授權(quán)失效<b class='flag-5'>告警</b>問(wèn)題

    大彩講堂:VisualTFT軟件modbus協(xié)議下的告警應(yīng)用

    VisualTFT軟件modbus協(xié)議下的告警應(yīng)用
    的頭像 發(fā)表于 07-01 17:40 ?1205次閱讀
    大彩講堂:VisualTFT軟件modbus協(xié)議下的<b class='flag-5'>告警</b>應(yīng)用

    車(chē)間通風(fēng)系統(tǒng)監(jiān)控告警物聯(lián)網(wǎng)解決方案

    風(fēng)扇運(yùn)行則現(xiàn)場(chǎng)告警燈會(huì)間隔閃爍;而如果全部風(fēng)扇停止工作就會(huì)啟動(dòng)聲光告警,需要立即停工檢修。 由于環(huán)境較惡劣,加上運(yùn)行時(shí)間長(zhǎng),風(fēng)扇故障率越來(lái)越高,采用人工巡檢的模式逐漸暴露出效率低、風(fēng)險(xiǎn)大等弊端,同時(shí)停機(jī)檢修所付出的成本
    的頭像 發(fā)表于 06-24 11:23 ?628次閱讀
    車(chē)間通風(fēng)系統(tǒng)監(jiān)控<b class='flag-5'>告警</b>物聯(lián)網(wǎng)解決方案

    智能電纜通斷采集機(jī),實(shí)時(shí)監(jiān)測(cè)精準(zhǔn)告警

    產(chǎn)品作用 電纜通斷采集主機(jī)是一款高度智能化的監(jiān)控設(shè)備,主要用于實(shí)時(shí)監(jiān)測(cè)電纜的通斷狀態(tài),并在異常情況下及時(shí)觸發(fā)告警。該設(shè)備支持多種移動(dòng)信號(hào),確保數(shù)據(jù)傳輸?shù)姆€(wěn)定性和可靠性。適用于電力、通信、交通、安防等
    的頭像 發(fā)表于 06-21 09:54 ?629次閱讀
    智能電纜通斷采集機(jī),實(shí)時(shí)監(jiān)測(cè)精準(zhǔn)<b class='flag-5'>告警</b>

    TECS OpenStack資源池虛機(jī)寫(xiě)磁盤(pán)時(shí)延高告警的問(wèn)題處理

    某運(yùn)營(yíng)商TECS資源池,在當(dāng)前告警中顯示“虛機(jī)寫(xiě)磁盤(pán)時(shí)延高告警”,如下圖所示。告警統(tǒng)計(jì)總體平均10分鐘左右自動(dòng)恢復(fù)。
    的頭像 發(fā)表于 03-21 09:36 ?1015次閱讀
    TECS OpenStack資源池虛機(jī)寫(xiě)磁盤(pán)時(shí)延高<b class='flag-5'>告警</b>的問(wèn)題處理