Detaillierte Erläuterung des Apache SkyWalking-Alarmkonfigurationshandbuchs

Detaillierte Erläuterung des Apache SkyWalking-Alarmkonfigurationshandbuchs

Apache SkyWalking

Apache SkyWalking ist ein Tool zur Anwendungsleistungsüberwachung (Application Performance Management, APM) für verteilte Systeme, das für Microservices, Cloud-native Architekturen und containerbasierte (Docker, K8s, Mesos) Architekturen entwickelt wurde.

Es bietet eine Komplettlösung für verteiltes Tracing, Service-Mesh-Telemetrieanalyse, Metrikaggregation und Visualisierung.

Apache SkyWalking-Warnungen

Apache SkyWalking-Alarme werden durch eine Reihe von Regeln gesteuert, die in config/alarm-settings.yml definiert sind.

Die Definition der Alarmregeln gliedert sich in drei Teile.

  • Alarmregel: Definiert die Bedingungen, die zum Auslösen eines Alarms berücksichtigt werden.
  • Webhook: Eine Liste von Service-Endpunkten, die aufgerufen werden, wenn ein Alarm ausgelöst wird.
  • gRPCHook: Der Host und der Port der Remote-gRPC-Methode, die aufgerufen wird, wenn der Alarm ausgelöst wird.
  • Slack-Chat-Hook: Die Slack-Chat-Schnittstelle, die aufgerufen wird, wenn der Alarm ausgelöst wird.
  • WeChat-Hook: Die WeChat-Schnittstelle, die aufgerufen wird, wenn der Alarm ausgelöst wird.
  • DingTalk-Hook: Die DingTalk-Schnittstelle, die aufgerufen wird, wenn ein Alarm ausgelöst wird.

Alarmregeln

Es gibt zwei Arten von Alarmregeln: Einzelregeln und zusammengesetzte Regeln. Zusammengesetzte Regeln sind eine Kombination aus Einzelregeln.

Individuelle Regeln

Zu den einzelnen Regelungen zählen im Wesentlichen folgende:

  • Regelname: Ein eindeutiger Name, der in den Alarminformationen angezeigt wird und mit _rule enden muss.
  • metrics-name: Name der Metrik, der auch der Metrikname im OAL-Skript ist. Die Metriken, die in der Standardkonfiguration für Alarme verwendet werden können, sind: Dienst, Instanz, Endpunkt, Dienstbeziehung, Instanzbeziehung und Endpunktbeziehung. Es werden nur die Typen „long“, „double“ und „int“ unterstützt.
  • include-names: Eine Liste von Entitätsnamen, die in diese Regel aufgenommen werden sollen.
  • exclude-names: Eine Liste von Entitätsnamen, die von dieser Regel ausgeschlossen werden sollen.
  • include-names-regex: Geben Sie einen regulären Ausdruck an, um Entitätsnamen einzuschließen. Wenn Sie sowohl eine Include-Namensliste als auch einen regulären Ausdruck für eingeschlossene Namen festlegen, werden beide Regeln wirksam.
  • exclude-names-regex: Geben Sie einen regulären Ausdruck an, um Entitätsnamen auszuschließen. Wenn Sie sowohl eine Liste mit auszuschließenden Namen als auch einen regulären Ausdruck für auszuschließende Namen festlegen, werden beide Regeln wirksam.
  • include-labels: In dieser Regel enthaltene Labels.
  • exclude-labels: Von dieser Regel ausgeschlossene Labels.
  • include-labels-regex: Geben Sie einen regulären Ausdruck zum Einschließen von Beschriftungen an. Wenn Sie sowohl eine Include-Tag-Liste als auch einen regulären Ausdruck für eingeschlossene Tags festlegen, werden beide Regeln wirksam.
  • exclude-labels-regex: Geben Sie einen regulären Ausdruck an, um Beschriftungen auszuschließen. Wenn Sie sowohl eine Ausschlusstagliste als auch einen regulären Ausdruck für Ausschlusstags festlegen, werden beide Regeln wirksam.

Die Tag-Einstellungen müssen die Daten in einem Messsystem wie Prometheus oder Micrometer speichern. Die oben genannten vier Beschriftungseinstellungen müssen die Schnittstelle LabeledValueHolder implementieren.

  • Schwellenwert: Schwellenwert.

Bei Metriken mit mehreren Werten, wie etwa Perzentilen, handelt es sich bei Schwellenwerten um ein Array. Beschreiben Sie es wie folgt: value1 value2 value3 value4 value5 .
Jeder Wert kann als Schwellenwert für jeden Wert in der Metrik verwendet werden. Wenn der Alarm bei diesem oder bestimmten Werten nicht ausgelöst werden soll, setzen Sie den Wert auf - .
Beispielsweise ist im Perzentil value1 der Schwellenwert von P50, value2 der Schwellenwert von P75, dann bedeuten -,-,value3, value4, value5 die Perzentilalarmregeln von P50 und P75 ohne Schwellenwerte.

  • op: Operator, unterstützt > , >= , < , <= , = .
  • Zeitraum: Wie oft die Alarmregel überprüft werden muss. Dies ist ein Zeitfenster, das mit der Zeit der Backend-Bereitstellungsumgebung übereinstimmt.
  • Anzahl: Wenn die Anzahl der Male, die die Operationsanzahl den Schwellenwert in einem Periodenfenster überschreitet, den Wert „Zählung“ erreicht, wird ein Alarm gesendet.
  • only-as-condition: true oder false , gibt an, ob die Regel eine Warnung senden kann oder nur als Bedingung einer zusammengesetzten Regel.
  • Ruhezeitraum: Nachdem in der Zeit N ein Alarm ausgelöst wurde, wird während des Zeitraums N -> N + Ruhezeitraum kein Alarm ausgelöst. Standardmäßig ist es identisch mit dem Zeitraum, was bedeutet, dass der gleiche Alarm (derselbe Metrikname mit derselben ID) nur einmal im gleichen Zeitraum ausgelöst wird.
  • Nachricht: Die Benachrichtigungsnachricht, die gesendet wird, wenn die Regel ausgelöst wird.

Zum Beispiel:

Regeln:
  service_resp_time_rule:
    Metrikname: service_resp_time
    op: ">"
    Schwellenwert: 1000
    Zeitraum: 10
    Anzahl: 2
    Ruhezeit: 10
    Nachricht: Die durchschnittliche Antwortzeit des Dienstes [{name}] hat in den letzten 10 Minuten 2 Minuten lang 1 Sekunde überschritten. service_instance_resp_time_rule:
    Metrikname: Service-Instance-Resp-Time
    op: ">"
    Schwellenwert: 1000
    Zeitraum: 10
    Anzahl: 2
    Ruhezeit: 10
    Nachricht: Die durchschnittliche Antwortzeit der Instanz [{name}] hat in den letzten 10 Minuten 2 Minuten lang 1 Sekunde überschritten endpoint_resp_time_rule:
    Metrikname: endpoint_avg
    Schwellenwert: 1000
    op: ">"
    Zeitraum: 10
    Anzahl: 2
    Nachricht: Die durchschnittliche Antwortzeit des Endpunkts [{name}] hat in den letzten 10 Minuten 2 Minuten lang 1 Sekunde überschritten.

Die Artikel werden ständig aktualisiert. Suchen Sie auf WeChat nach „Wanmao Academy“, um sie zuerst zu lesen. Antworten Sie anschließend mit „E-Book“, um 12 unverzichtbare technische Java-Bücher kostenlos zu erhalten.

Zusammengesetzte Regeln

Zusammengesetzte Regeln sind nur auf Alarmregeln anwendbar, die auf dieselbe Entitätsebene abzielen. Beispielsweise sind beides Alarmregeln auf Serviceebene: service_percent_rule && service_resp_time_percentile_rule .
Es ist nicht möglich, Warnregeln auf unterschiedlichen Entitätsebenen zu schreiben, zum Beispiel eine Warnregel auf Serviceebene und eine Regel auf Endpunktebene: service_percent_rule && endpoint_percent_rule .

Die wichtigsten Punkte der zusammengesetzten Regeln sind wie folgt:

  • Regelname: Ein eindeutiger Name, der in den Alarminformationen angezeigt wird und mit _rule enden muss.
  • Ausdruck: Gibt an, wie die Regeln zusammengestellt werden, und unterstützt die Operatoren && , || und () .
  • Nachricht: Die Benachrichtigungsnachricht, die gesendet wird, wenn die Regel ausgelöst wird.

Zum Beispiel:

Regeln:
  service_resp_time_rule:
    Metrikname: service_resp_time
    op: ">"
    Schwellenwert: 1000
    Zeitraum: 10
    Anzahl: 2
    Ruhezeit: 10
    Nachricht: Die durchschnittliche Antwortzeit des Dienstes [{name}] hat in den letzten 10 Minuten 2 Minuten lang 1 Sekunde überschritten. service_sla_rule:
    Metrikname: service_sla
    op: "<"
    Schwellenwert: 8000
    Zeitraum: 10
    Anzahl: 2
    Ruhezeit: 10
    Nachricht: Die Erfolgsrate des Dienstes [{name}] lag in den letzten 10 Minuten 2 Minuten lang unter 80 %.
zusammengesetzte Regeln:
  comp_regel:
    Ausdruck: service_resp_time_rule && service_sla_rule
    Nachricht: Der Dienst [{name}] hatte in den letzten 10 Minuten eine durchschnittliche Antwortzeit von mehr als 1 Sekunde für 2 Minuten und eine Erfolgsrate von weniger als 80 %.

Webhooks

Webhooks erfordern einen Peer-to-Peer-Webcontainer. Die Warnmeldung wird per HTTP-Anfrage gesendet. Die Anfragemethode ist POST und Content-Type ist application/json . Das JSON-Format enthält die folgenden Informationen:

  • scopeId: Die ID des Zielbereichs.
  • Name: Der Entitätsname des Zielbereichs.
  • id0: ID der Scope-Entität. id1: nicht verwendet.
  • ruleName: Der Regelname, den Sie in alarm-settings.yml konfiguriert haben.
  • alarmMessage. Inhalt der Alarmmeldung.
  • Startzeit. Alarmzeitstempel, die Anzahl der Millisekunden zwischen der aktuellen Zeit und UTC 1970/1/1.

Zum Beispiel:

[{
	"scopeId": 1, 
	"Umfang": "DIENST",
	"Name": "noch ein Dienst", 
	"id0": "b3JkZXItY2VudGVyLXNlYXJjaC1hcGk=.1",  
	"id1": "",  
    "Regelname": "Service-Antwortzeitregel",
	"alarmMessage": "Die durchschnittliche Antwortzeit des Dienstes [one-more-service] hat in den letzten 10 Minuten 2 Minuten lang 1 Sekunde überschritten",
	"Startzeit": 1617670815000
}, {
	"scopeId": 2,
	"Umfang": "SERVICE_INSTANCE",
	"Name": "[email protected] von one-more-service",
	"id0": "dWF0LWxib2Mtc2VydmljZQ==.1_ZTRiMzEyNjJhY2FhNDdlZjkyYTIyYjZhMmI4YTdjYjFAMTcyLjI0LjMwLjEzOA==",
	"id1": "",
    "Regelname": "Instanz_jvm_young_gc_count_rule",
	"alarmMessage": "Die YoungGC-Zeiten der Instanz [[email protected] von one-more-service] wurden in den letzten 10 Minuten innerhalb von 2 Minuten 10 Mal überschritten",
	"Startzeit": 1617670815000
}, {
	"scopeId": 3,
	"Umfang": "ENDPUNKT",
	"Name": "/ein/mehr/Endpunkt in einem-weiteren-Dienst",
	"id0": "b25lcGllY2UtYXBp.1_L3RlYWNoZXIvc3R1ZGVudC92aXBsZXNzb25z",
	"id1": "",
    "Regelname": "Endpunkt-Antwortzeitregel",
	"alarmMessage": "Die durchschnittliche Antwortzeit des Endpunkts [/one/more/endpoint in one-more-service] hat in den letzten 10 Minuten 2 Minuten lang 1 Sekunde überschritten",
	"Startzeit": 1617670815000
}]

gRPCHook

Warnmeldungen werden über gRPC-Remotemethoden unter Verwendung von Protobuf -Typen gesendet. Die wesentlichen Informationen des Nachrichtenformats sind wie folgt definiert:

Syntax = "proto3";

Option java_multiple_files = true;
Option Java_Package = "org.apache.skywalking.oap.server.core.alarm.grpc";

Dienst AlarmService {
    rpc doAlarm (Stream AlarmMessage) gibt (Antwort) zurück {
    }
}

Nachricht AlarmMessage {
    int64 Bereichs-ID = 1;
    Zeichenfolgenbereich = 2;
    Zeichenfolgenname = 3;
    Zeichenfolge-ID0 = 4;
    Zeichenfolge-ID1 = 5;
    Zeichenfolge Regelname = 6;
    Zeichenfolge Alarmnachricht = 7;
    int64 Startzeit = 8;
}

Nachricht Antwort {
}

Slack-Chat-Hook

Sie müssen der Anleitung „Erste Schritte mit eingehenden Webhooks“ folgen und neue Webhooks erstellen.

Wenn Sie Slack Incoming Webhooks wie folgt konfiguriert haben, werden Warnmeldungen per HTTP POST mit Content-Type application/json gesendet.

Zum Beispiel:

SlackHooks:
  Textvorlage: |-
    {
      "Typ": "Abschnitt",
      "Text": {
        "Typ": "mrkdwn",
        "Text": ":Wecker: *Apache Skywalking-Alarm* \n **%s**."
      }
    }
  Webhooks:
    - https://hooks.slack.com/services/x/y/z

WeChat-Haken

Nur die Enterprise-Version von WeChat unterstützt Webhooks. Informationen zur Verwendung von WeChat-Webhooks finden Sie unter So konfigurieren Sie Gruppenroboter.

Wenn Sie WeChat-Webhooks wie folgt konfigurieren, wird die Warnmeldung per HTTP POST mit Content-Type application/json gesendet.

Zum Beispiel:

wechatHooks:
  Textvorlage: |-
    {
      "msgtype": "Text",
      "Text": {
        "Inhalt": "Apache SkyWalking-Warnung: \n %s."
      }
    }
  Webhooks:
    - https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=dummy_key

DingTalk-Haken

Sie müssen der benutzerdefinierten Bot-Öffnung folgen und neue Webhooks erstellen. Aus Sicherheitsgründen können Sie einen optionalen geheimen Schlüssel für Ihre Webhook-URL konfigurieren.

Wenn Sie die Webhooks von DingTalk wie folgt konfigurieren, wird die Warnmeldung per HTTP POST mit Content-Type application/json gesendet.

Zum Beispiel:

DingtalkHooks:
  Textvorlage: |-
    {
      "msgtype": "Text",
      "Text": {
        "Inhalt": "Apache SkyWalking-Warnung: \n %s."
      }
    }
  Webhooks:
    - URL: https://oapi.dingtalk.com/robot/send?access_token=dummy_token
      Geheimnis: Dummygeheimnis 

Scannen Sie den QR-Code auf WeChat, folgen Sie Java Technology Fans , antworten Sie mit „ E-Books “ und erhalten Sie kostenlos unverzichtbare Bücher zur Java-Technologie.

Dies ist das Ende dieses Artikels über die Anleitung zur Alarmkonfiguration für Apache SkyWalking. Weitere relevante Inhalte zur Alarmkonfiguration für SkyWalking finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Spring Cloud integriert Apache-SkyWalking, um Link-Tracking zu implementieren
  • Erfahren Sie, wie Sie die Selbstüberwachung von Apache SkyWalking schnell aktivieren

<<:  Standards zum Schreiben von Codekommentaren bei der Webseitenerstellung

>>:  Reines CSS zum Ändern der Farbe des Bildes

Artikel empfehlen

Lösung für den ES-Speicherüberlauf beim Starten von Docker

Fügen Sie die Datei jvm.options zur Elasticsearch...

CSS-Implementierungscode für mehrstufige Menüs

Dies ist eine ziemlich coole Funktion, die Websei...

So führen Sie das Springboot-Projekt im Docker aus

1. Klicken Sie unten in IDEA auf Terminal und geb...

Befehl zum Entfernen (Löschen) eines symbolischen Links in Linux

Möglicherweise müssen Sie in Linux manchmal symbo...

Beispielcode zum Setzen von Hotlinks und Koordinatenwerten für Webbilder

Manchmal müssen Sie mehrere Bereiche auf einem Bi...

Vue implementiert das Hinzufügen eines Wasserzeicheneffekts zur Seite

Als ich kürzlich an einem Projekt arbeitete, wurd...

Zusammenfassung des JS-Ausführungskontexts und -umfangs

Inhaltsverzeichnis Vorwort Text 1. Konzepte im Zu...

So löschen Sie Standardformate und legen allgemeine Formate in CSS fest

CSS Standard-Stile löschen Die üblichen klaren St...

Lösung für den MySQL-Root-Passwortfehler Nummer 1045

MySQL-Dienst stoppen Klicken Sie in Windows mit d...

Prozessdiagramm für das erste Bereitstellungs-Webprojekt von Tomcat

Legen Sie Ihr eigenes Webprojekt im Verzeichnis w...

Detaillierte Erklärung zur Verwendung von Filtereigenschaften in CSS3

Als ich kürzlich das Intranet-Portal änderte, sti...

Vue implementiert die Bildfrequenzwiedergabe des Karussells

In diesem Artikelbeispiel wird der spezifische Co...