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

推薦する

太字の <b> と <strong> の違いの分析

私たちウェブマスターは皆、ウェブサイトを最適化する際に記事内のキーワードを太字にすることが最適化に非...

HTML と JavaScript を使用してローカル メディア (ビデオとオーディオ) ファイルを再生する方法

まず、セキュリティ上の理由から、JavaScript はローカル リソース ファイルに直接アクセスで...

Nodejs モジュール システムのソースコード分析

目次概要CommonJS 仕様Node の CommonJS 仕様の実装モジュールのエクスポートとイ...

Docker でローカルにイメージをインポート/保存/読み込み/削除する方法

1. Dockerはローカルイメージをインポートする場合によっては、イメージをローカルまたは別の友人...

React Native環境のインストールプロセス

react-native インストールプロセス1.npx react-native init Awe...

MySQLインデックスに関する重要な面接の質問をいくつか共有します

序文インデックスは、データベース内の 1 つ以上の列の値を並べ替え、データベースが効率的にデータを取...

Ubuntuで余分なカーネルを削除する方法

ステップ1: 現在のカーネルを表示する 読み取る $ uname -a Linux rew 4.15...

MySQLキーワードDistinctの詳細な紹介

MySQLキーワードDistinctの使い方の紹介DDL SQLを準備します: テーブルテストを作成...

Docker データボリュームの一般的な操作コードの例

開発者が Dockerfile を使用してイメージをビルドする場合は、イメージをビルドするときにデー...

複数のフィールドをグループ化するMySQLグループ

日常の開発タスクでは、データ テーブル内のグループ化フィールドに基づいて統計データを取得するために、...

WeChatミニプログラム公式顔認証の詳しい説明

ミニプログラムはユーザーの個人情報を収集してアップロードしましたが、拒否されました。こんにちは、ミニ...

MySQLデータベースをアンインストールするための完全な手順

MySQLデータベースを完全にアンインストールするプロセスは次のとおりです。 1. MySQLサービ...

Dockerデータボリューム操作の実装

データボリュームの使用開始先ほどのケースでは、ホストからコンテナにデータをコピーする必要がある場合、...

mysql 計算関数の詳細

目次2. フィールドの連結2. MySQL関数の例をいくつか挙げてください。 2.1 シンボル処理2...

データベース接続のURLの詳細な説明と概要

データベース接続のURLの詳細な説明と概要JDBC URL = プロトコル名 + サブプロトコル名 ...