異常警報 - ベースの分散型追跡システムをSkyWalking

前の二つの記事によって、私たちは、すべてのサービスの動作を理解するために、マイクロサービスを監視し、SW環境の基盤を築いてきました。しかし、サービスの応答が遅いがあり、時間のかかるインターフェースすぐに今日のヒーローに私たちを必要とする、問題を突き止めるに深刻な我々の必要性 - モニタリングのアラームが、このポストは、最後の1のSWシリーズです。

UIパラメータ

下に示すように、まず第一に、私たちは、SWダッシュボードにいくつかの重要なパラメータについて知っています
画像

アラームの設定

プロセスアラーム

基本的な原理は、データがskywalkingコレクタを収集し、次いで、アラームルール(例えば、サービスの応答時間、時間のサービス応答率)に基づいて構成された追跡ポーリング間隔をskywalkingリンク送信アラームに、しきい値に達した場合に送信されますアラーム情報応答。アラーム情報は、開発者が指定したインターフェイスウェブフックに自分で、アラームを釘、電子メール警告をアラームモードのすべての種類を書くことができるように非同期で、(ウェブフックの特定のユーザーインターフェイスが自己定義することができます)、完全にスレッドプールのウェブフックインターフェースを呼び出す送られますように。

規則設定

コアは、定義アラームルールのセットによって駆動されてconfig/alarm-settings.yml示されるように開いた後、:
1213

定義されたアラームルールは2つの部分に分けられます。

  • アラームルール。彼らは、考慮すべき条件、対策がアラームをトリガーする方法を定義します。
  • [ネットワークフック](#ウェブフック}。アラートが言われるために、端末のニーズにサービスを提供され、トリガされます。

アラームは、次の要点を支配します

  • ルール名。アラームメッセージに一意の名前を表示します。_Ruleが終了しなければなりません。
  • メトリック名。メトリック名はOALスクリプトです。
  • 名前を含めます。このルールでは、その名の下にエンティティ。たとえば、サービス名、端末名。
  • しきい値。しきい値。
  • OP。オペレータサポート>、<、=。
  • 期間.. どのくらいの頻度でこのアラームのルールに沿って、現在のインデックスデータは、時間の窓で、バックエンド・デプロイメント環境は時間が一致するかどうかをチェックします。
  • カウント。1つのウィンドウで期間、値がアラートを送信するためにカウント値のニーズを達成するために、(OPにより)が閾値を超えた場合。
  • 沈黙期間。アラームが時間N、TNでトリガーされた後- >この段階でTN +期間はアラームではありません。デフォルトでは、期間、同期間中にこの手段同じアラーム(同じメトリック名IDが同じでは)一度だけトリガされます

ウェブフック

アラームウェブフック請求ピアは、HTTPリクエストを送信することによって、要求メソッドPOST Webコンテナのアラームメッセージである、コンテンツタイプアプリケーション/ JSONで、JSON形式はリスト<org.apache.skywalking.oap.serverに基づいているSkyWalking .core.alarm.AlarmMessageは、以下の情報が含まれています。

  • scopeId。可能な範囲のすべてを確認してください  org.apache.skywalking.oap.server.core.source.DefaultScopeDefine
  • 名前。ターゲットエンティティの名前の範囲。
  • ID0。IDスコープエンティティ。
  • ID1。未使用.alarmMessage。警告メッセージの内容。
  • startTime。警告時間は、現在時刻が1920年1月1日UTCとの間に位置しています。
[{
    "scopeId": 1, 
        "name": "serviceA", 
    "id0": 12,  
    "id1": 0,  
    "alarmMessage": "alarmMessage xxxx",
    "startTime": 1560524171000
}, {
    "scopeId": 1,
        "name": "serviceB",
    "id0": 23,
    "id1": 0,
    "alarmMessage": "alarmMessage yyy",
    "startTime": 1560524171000
}]

コードの戦闘

  • Entityクラスは、警告メッセージのSWを受信するための準備しました
@Data
public class SwAlarmVO {
    private int scopeId;
    private String name;
    private int id0;
    private int id1;
    private String alarmMessage;
    private long startTime;
}
  • 書き込みウェブフックインタフェース
@RestController
@RequestMapping("sw")
@Log4j2
public class AlarmController {
    @PostMapping("/alarm")
    public void alarm(@RequestBody List<SwAlarmVO> alarmList){
        log.info("skywalking alarm message:{}",alarmList);
        //todo doalarm
    }
}
  • アラーム設定を変更し、オープンなインタフェースは、ウェブフック

  • 遅いコール要求をシミュレートするために、我々は、コード使用Thread.sleep(1000)のインターフェイスを消費増加を、そして他のインタフェースは、アラート応答をwebhoook
    画像

詳細は以下のとおりです。
[SwAlarmVO(scopeId = 2, name = dubbo - consumer - pid: 13812 @ jianzhang11, id0 = 28, id1 = 0, alarmMessage = Response time of service instance dubbo - consumer - pid: 13812 @ jianzhang11 is more than 1000ms in 2 minutes of last 10 minutes, startTime = 1573122018755), SwAlarmVO(scopeId = 2, name = dubbo - provider2 - pid: 14108 @ jianzhang11, id0 = 25, id1 = 0, alarmMessage = Response time of service instance dubbo - provider2 - pid: 14108 @ jianzhang11 is more than 1000ms in 2 minutes of last 10 minutes, startTime = 1573122018755)]
この場合、後続のメッセージが直接カスタム開発を知らせることができ、アラームがSW受信正常にウェブフック。

関連記事:

SkyWalkingベースの分散追跡システム - 建築環境

SkyWalkingベースの分散トラッキングシステム - マイクロ監視サービス

個々の公衆番号に注意してください:JAVA Rizhilu

アバター

おすすめ

転載: www.cnblogs.com/jianzh5/p/11823686.html