Apache SkyWalking アラーム設定ガイドの詳細な説明

Apache SkyWalking アラーム設定ガイドの詳細な説明

アパッチ スカイウォーキング

Apache SkyWalking は、マイクロサービス、クラウド ネイティブ アーキテクチャ、コンテナー ベース (Docker、K8s、Mesos) アーキテクチャ向けに設計された、分散システム向けのアプリケーション パフォーマンス監視ツール (アプリケーション パフォーマンス管理、APM) です。

分散トレース、サービス メッシュ テレメトリ分析、メトリック集約、視覚化のためのオールインワン ソリューションを提供します。

Apache SkyWalking アラート

Apache SkyWalking アラームは、 config/alarm-settings.ymlファイルで定義されている一連のルールによって駆動されます。

アラームルールの定義は 3 つの部分に分かれています。

  • アラーム ルール: アラームをトリガーするために考慮される条件を定義します。
  • webhook: アラームがトリガーされたときに呼び出されるサービス エンドポイントのリスト。
  • gRPCHook: アラームがトリガーされたときに呼び出されるリモート gRPC メソッドのホストとポート。
  • Slack チャット フック: アラームがトリガーされたときに呼び出される Slack チャット インターフェース。
  • WeChat フック: アラームがトリガーされたときに呼び出される WeChat インターフェース。
  • DingTalk フック: アラームがトリガーされたときに呼び出される DingTalk インターフェース。

アラームルール

アラーム ルールには、個別ルールと複合ルールの 2 種類があります。複合ルールは、個別ルールの組み合わせです。

個別ルール

個別のルールには主に以下のものが含まれます。

  • ルール名: アラーム情報に表示される一意の名前。_rule で終わる必要があります。
  • metrics-name: メトリック名。これは OAL スクリプト内のメトリック名でもあります。デフォルト構成でアラートに使用できるメトリックは、サービス、インスタンス、エンドポイント、サービス リレーションシップ、インスタンス リレーションシップ、およびエンドポイント リレーションシップです。 long、double、int 型のみをサポートします。
  • include-names: このルールに含めるエンティティ名のリスト。
  • exclude-names: このルールから除外するエンティティ名のリスト。
  • include-names-regex: エンティティ名を含めるための正規表現を指定します。含める名前リストと含める名前の正規表現の両方を設定すると、両方のルールが有効になります。
  • exclude-names-regex: エンティティ名を除外する正規表現を指定します。除外名リストと除外名の正規表現の両方を設定すると、両方のルールが有効になります。
  • include-labels: このルールに含まれるラベル。
  • exclude-labels: このルールから除外されるラベル。
  • include-labels-regex: ラベルを含めるための正規表現を指定します。含めるタグ リストと含めるタグの正規表現の両方を設定すると、両方のルールが有効になります。
  • exclude-labels-regex: ラベルを除外する正規表現を指定します。除外タグ リストと除外タグの正規表現の両方を設定すると、両方のルールが有効になります。

タグ設定では、Prometheus、Micrometer などのメーター システムにデータを保存する必要があります。上記の 4 つのラベル設定は、 LabeledValueHolderインターフェイスを実装する必要があります。

  • 閾値: 閾値。

パーセンタイルなどの複数値メトリックの場合、しきい値は配列になります。 value1 value2 value3 value4 value5のように記述します。
各値は、メトリック内の各値のしきい値として使用できます。この値または特定の値によってアラートがトリガーされないようにするには、値を-に設定します。
たとえば、パーセンタイルでは、 value1は P50 のしきい値、 value2 P75 のしきい値であり、 -,-,value3, value4, value5しきい値のない P50 および P75 のパーセンタイル アラーム ルールを意味します。

  • op: 演算子。 >>=<<==をサポートします。
  • 期間: アラーム ルールをチェックする必要がある頻度。これは、バックエンドのデプロイメント環境の時間と一致する時間ウィンドウです。
  • count: 期間ウィンドウ内でオペレーション数がしきい値を超えた回数が count に達すると、アラームが送信されます。
  • only-as-condition: trueまたはfalse 。ルールがアラートを送信できるか、または複合ルールの条件としてのみ送信できるかを指定します。
  • 無音期間: 時間 N でアラームがトリガーされた後、期間 N -> N + 無音期間中はアラームはトリガーされません。 デフォルトでは、期間と同じであり、同じアラーム (同じ ID を持つ同じメトリック名) は同じ期間に 1 回だけトリガーされることを意味します。
  • メッセージ: ルールがトリガーされたときに送信される通知メッセージ。

例えば:

ルール:
  サービス応答時間ルール:
    メトリック名: service_resp_time
    op: ">"
    閾値: 1000
    期間: 10
    カウント: 2
    沈黙期間: 10
    メッセージ: サービス [{name}] の平均応答時間は、過去 10 分間に 2 分間 1 秒を超えました。service_instance_resp_time_rule:
    メトリック名: service_instance_resp_time
    op: ">"
    閾値: 1000
    期間: 10
    カウント: 2
    沈黙期間: 10
    メッセージ: インスタンス [{name}] の平均応答時間は、過去 10 分間に 2 分間 1 秒を超えました。endpoint_resp_time_rule:
    メトリクス名: エンドポイント平均
    閾値: 1000
    op: ">"
    期間: 10
    カウント: 2
    メッセージ: エンドポイント [{name}] の平均応答時間は、過去 10 分間で 2 分間 1 秒を超えました。

記事は継続的に更新されます。WeChatで「Wanmao Academy」を検索して、まず読んでください。フォローした後、「e-book」と返信すると、必読のJava技術書12冊を無料で入手できます。

複合ルール

複合ルールは、同じエンティティ レベルを対象とするアラーム ルールにのみ適用されます。たとえば、両方ともサービス レベルのアラーム ルールです: service_percent_rule && service_resp_time_percentile_rule
異なるエンティティ レベルでアラート ルールを記述することはできません。たとえば、サービス レベルで 1 つのアラート ルールを記述し、エンドポイント レベルで 1 つのルールを記述することはできません ( service_percent_rule && endpoint_percent_rule )。

複合ルールの主なポイントは次のとおりです。

  • ルール名: アラーム情報に表示される一意の名前_ruleで終わる必要があります。
  • 式: &&||()演算子をサポートして、ルールを構成する方法を指定します。
  • メッセージ: ルールがトリガーされたときに送信される通知メッセージ。

例えば:

ルール:
  サービス応答時間ルール:
    メトリック名: service_resp_time
    op: ">"
    閾値: 1000
    期間: 10
    カウント: 2
    沈黙期間: 10
    メッセージ: サービス [{name}] の平均応答時間は、過去 10 分間に 2 分間 1 秒を超えました。service_sla_rule:
    メトリクス名: service_sla
    op: "<"
    閾値: 8000
    期間: 10
    カウント: 2
    沈黙期間: 10
    メッセージ: サービス [{name}] の成功率は、過去 10 分間のうち 2 分間、80% 未満でした。
複合ルール:
  構成ルール:
    式: service_resp_time_rule && service_sla_rule
    メッセージ: サービス [{name}] の平均応答時間は、過去 10 分間の 2 分間で 1 秒を超えており、成功率は 80% 未満です。

ウェブフック

Webhook にはピアツーピアの Web コンテナーが必要です。警告メッセージは HTTP リクエスト経由で送信されます。リクエスト メソッドはPOSTで、 Content-Typeapplication/jsonです。JSON 形式には次の情報が含まれます。

  • scopeId: 対象スコープの ID。
  • name: ターゲットスコープのエンティティ名。
  • id0: スコープ エンティティの ID。 id1: 使用されていません。
  • ruleName: alarm-settings.ymlで設定したルール名。
  • アラームメッセージの内容。
  • startTime。アラームのタイムスタンプ。現在の時刻と UTC 1970/1/1 の間のミリ秒数。

例えば:

[{
	"スコープID": 1, 
	「スコープ」:「サービス」、
	"名前": "もう1つのサービス", 
	"id0": "b3JkZXItY2VudGVyLXNlYXJjaC1hcGk=.1",  
	"id1": "",  
    "ルール名": "サービス応答時間ルール",
	"alarmMessage": "サービス [one-more-service] の平均応答時間は、過去 10 分間に 2 分間 1 秒を超えました",
	「開始時間」: 1617670815000
}, {
	"スコープID": 2,
	"スコープ": "SERVICE_INSTANCE",
	"name": "[email protected] of one-more-service",
	"id0": "dWF0LWxib2Mtc2VydmljZQ==.1_ZTRiMzEyNjJhY2FhNDdlZjkyYTIyYjZhMmI4YTdjYjFAMTcyLjI0LjMwLjEzOA==",
	"id1": "",
    "ルール名": "instance_jvm_young_gc_count_rule",
	"alarmMessage": "インスタンス [[email protected] of one-more-service] の YoungGC 回数が、過去 10 分間で 2 分間に 10 回を超えました",
	「開始時間」: 1617670815000
}, {
	"スコープID": 3,
	"スコープ": "エンドポイント",
	"name": "one-more-service 内の /one/more/endpoint",
	"id0": "b25lcGllY2UtYXBp.1_L3RlYWNoZXIvc3R1ZGVudC92aXBsZXNzb25z",
	"id1": "",
    "ルール名": "エンドポイント応答時間ルール",
	"alarmMessage": "エンドポイント [/one/more/endpoint in one-more-service] の平均応答時間が、過去 10 分間に 2 分間 1 秒を超えました",
	「開始時間」: 1617670815000
}]

gRPCフック

アラート メッセージは、 Protobufタイプを使用して gRPC リモート メソッド経由で送信されます。メッセージ形式のキー情報は次のように定義されます。

構文 = "proto3";

オプション java_multiple_files = true;
オプション java_package = "org.apache.skywalking.oap.server.core.alarm.grpc";

サービス AlarmService {
    rpc doAlarm (stream AlarmMessage) は (Response) を返します {
    }
}

メッセージ アラームメッセージ {
    int64 スコープID = 1;
    文字列スコープ = 2;
    文字列名 = 3;
    文字列 id0 = 4;
    文字列 id1 = 5;
    文字列ルール名 = 6;
    文字列アラームメッセージ = 7;
    int64 開始時間 = 8;
}

メッセージ応答{
}

Slack チャットフック

Incoming Webhooks 入門ガイドに従って、新しい Webhook を作成する必要があります。

Slack Incoming Webhooks を次のように設定した場合、アラート メッセージはContent-Type application/jsonで HTTP POST経由で送信されます。

例えば:

slackフック:
  テキストテンプレート: |-
    {
      "タイプ": "セクション",
      "文章": {
        "タイプ": "mrkdwn",
        "text": ":alarm_clock: *Apache Skywalking Alarm* \n **%s**。"
      }
    }
  ウェブフック:
    - https://hooks.slack.com/services/x/y/z

WeChatフック

Webhook をサポートするのは WeChat のエンタープライズ バージョンのみです。WeChat の Webhook の使用方法については、「グループ ロボットの構成方法」を参照してください。

WeChat Webhooks を次のように設定すると、 Content-Typeapplication/jsonのアラート メッセージが HTTP POST経由で送信されます。

例えば:

wechatフック:
  テキストテンプレート: |-
    {
      "メッセージタイプ": "テキスト",
      "文章": {
        "content": "Apache SkyWalking 警告: \n %s。"
      }
    }
  ウェブフック:
    - https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=dummy_key

ディントークフック

カスタム ボットのオープニングに従って、新しい Webhook を作成する必要があります。セキュリティ上の理由から、Webhook URL にオプションの秘密キーを設定できます。

DingTalk の Webhook を次のように設定すると、 Content-Typeapplication/jsonのアラート メッセージが HTTP POST経由で送信されます。

例えば:

Dingtalkフック:
  テキストテンプレート: |-
    {
      "メッセージタイプ": "テキスト",
      "文章": {
        "content": "Apache SkyWalking 警告: \n %s。"
      }
    }
  ウェブフック:
    - URL: https://oapi.dingtalk.com/robot/send?access_token=dummy_token
      秘密: ダミー秘密

WeChat で QR コードをスキャンし、 Java Technology Fans をフォローし、「電子書籍」と返信すると、必読の Java テクノロジー書籍を無料で入手できます。

Apache SkyWalking アラーム設定ガイドに関するこの記事はこれで終わりです。SkyWalking アラーム設定に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Spring Cloud は Apache-SkyWalking を統合してリンクトラッキングを実装します
  • Apache SkyWalkingのセルフモニタリングを素早く有効にする方法を説明します

<<:  ウェブページ制作時のコードコメントの書き方

>>:  画像の色を変更するための純粋なCSS

推薦する

Linux システムでのユーザー管理の概要

目次1. ユーザーとユーザーグループの重要性1) ユーザーの存在意義2) ユーザーグループの重要性2...

HTML2 キャンバス SVG が認識されない場合の解決策

ウェブページを画像としてキャプチャする新機能があったので、人気のhtml2canvasを使ってみまし...

Win10でのMySQL5.7.17無料インストール版の基本設定チュートリアルについて(画像とテキスト付き)

データベース アプリケーションは、アプリケーション システムに不可欠な部分です。リレーショナル デー...

Vueのインストール方法の紹介

目次1. グローバルに登録されたコンポーネント2. グローバルカスタム指示vue 、新しいプラグイン...

Kali Linux Vmware 仮想マシンのインストール (図とテキスト)

準備: 1. VMwareワークステーションソフトウェアをインストールする2. Kali Linux...

JavaScript で判決文をエレガントに記述する例

目次序文1. モナドの判断1.1 例1.2 オブジェクトに入れる1.3 マップに載せる2. 複数の判...

知らないかもしれない実用的なTypeScriptのヒント

目次序文関数のオーバーロードマッピングタイプ部分的、読み取り専用、Null 可能、必須選択、記録除外...

MySQL 8.0.20 Window10無料インストール版設定とNavicat管理チュートリアルグラフィック詳細説明

1. MySQL 8.0.20をダウンロードして解凍するダウンロードリンク: https://dev...

JavaScript での正規表現の使用について詳しく学ぶ

目次1. 正規表現とは何か1. 正規表現の特徴2. 正規表現の使用2. 正規表現における特殊文字1....

HTML Web ページにおける URL の表現

HTML では、一般的な URL はさまざまな方法で表現されます。相対 URL:コードをコピーコード...

Apache での ModSecurity のインストール、有効化、および構成

ModSecurity は、Web サーバーに入るすべてのパケットをチェックする強力なパケット フィ...

xtrabackup による MySQL データベースのバックアップと復元

mysqldump バックアップは、その独自の特性 (テーブルのロック、基本的に挿入スクリプトまたは...

MySQL外部キーの3つの関係例の詳細な説明

この記事では、例を使用して、MySQL 外部キーの 3 つの関係について説明します。ご参考までに、詳...

IDEA 2020 で Tomcat サーバーを構成するための詳細な手順

IDEA 2020 で Tomcat を構成する手順は次のとおりです。最初のステップはTomcatを...

Vue3 を使用してアップロード コンポーネントを実装するためのサンプル コード

目次一般的なアップロードコンポーネントの開発以下の機能を実装する必要がありますカスタムテンプレートサ...