기반 분산 추적 시스템을 SkyWalking - 이상 경보

이전 두 기사함으로써 우리는 모든 서비스의 작동을 이해하기 위해, 마이크로 모니터링 서비스, SW 환경의 기반을 구축했다. 느린 서비스 응답이 때, 바로 오늘의 주인공 우리를 필요로하는 문제 찾으려면 시간이 많이 소요되는 인터페이스 심각한 우리의 필요 - 모니터링 알람,하지만이 게시물은 마지막 하나의 SW 시리즈입니다.

UI 매개 변수

아래 그림과 같이 우선 우리는 SW 대시 보드에서 몇 가지 주요 매개 변수에 대해 알고
영상

알람 구성

공정 경보

기본적인 원리는 skywalking 컬렉터 수집 폴링 간격 데이터를 추적 skywalking 링크 송신 경보이고, 그 경보 규칙을 기반으로 구성된 (예를 들어, 서비스 응답 시간이, 시간의 서비스 응답 백분율)는 임계 값에 도달하면하여 전송은 알람 정보 응답. 개발자가 지정된 인터페이스은 webhook에서 자신에 대한 경고, 전자 메일 경고를 체포, 알람 모드의 모든 종류를 작성할 수 있도록 알람 정보를 비동기 전송 완료에 스레드 풀은 webhook 인터페이스를 호출되고, (은 webhook 특정 사용자 인터페이스는 자기가 정의 할 수 있습니다) 등등.

규칙 구성

코어는 경보 정의 규칙의 세트에 의해 구동되는 config/alarm-settings.yml바와 같이 개봉 후 :
1,213

정의 경보 규칙은 두 부분으로 나누어 져 있습니다.

  • 알람 규칙. 그들은 조치가 고려되어야 어떤 조건 경보를 트리거하는 방법을 정의합니다.
  • [네트워크 후크 (#은 webhook}. 경보가 트리거되면, 상기 단말의 요구가 이야기 할 수있는 서비스.

알람은 다음과 같은 주요 사항을 규칙

  • 규칙 이름. 알람 메시지에 고유 한 이름을 표시합니다. _Rule는 끝나야합니다.
  • 메트릭 이름. 메트릭 이름은 OAL 스크립트입니다.
  • 이름을 포함합니다. 이 규칙의 이름에서 엔티티. 예를 들어, 서비스 이름, 터미널 이름.
  • 임계 값. 임계 값.
  • OP. 조작 지지체>, <=.
  • 기간 .. 얼마나 자주이 알람의 규칙에 맞춰 현재 인덱스 데이터는 시간의 창인지 여부를 확인하고, 백엔드 배포 환경은 시간과 일치합니다.
  • 계산합니다. 값이 (OP에 의해)이 임계 값을 초과하는 경우주기에서 하나의 윈도우는 경고를 보낼 카운트 값의 요구를 달성한다.
  • 침묵 기간. 알람이 시간 N의 TN에서 트리거 된 후 ->이 단계에서 TN + 기간은 알람이 아닙니다. 기본적으로 기간은,이 방법은 같은 기간 (동일한 메트릭 이름 아이디에서 같은과) 같은 알람이 한 번만 트리거됩니다

은 webhook

HTTP 요청을 전송하여 웹 컨테이너 알람 메시지가 알람으로 webhook 청구 피어입니다 SkyWalking 요청 방법 POST는 콘텐츠 형식이 응용 프로그램 / JSON, JSON 형식이 목록 <org.apache.skywalking.oap.server에 따라입니다 .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
}]

코드 전투

  • 엔티티 클래스는 경고 메시지 자상을 받기위한 준비
@Data
public class SwAlarmVO {
    private int scopeId;
    private String name;
    private int id0;
    private int id1;
    private String alarmMessage;
    private long startTime;
}
  • 쓰기는 인터페이스은 webhook
@RestController
@RequestMapping("sw")
@Log4j2
public class AlarmController {
    @PostMapping("/alarm")
    public void alarm(@RequestBody List<SwAlarmVO> alarmList){
        log.info("skywalking alarm message:{}",alarmList);
        //todo doalarm
    }
}
  • 알람 구성을 수정, 개방형 인터페이스는은 webhook

  • 느린 호출 요청을 시뮬레이션하기 위해, 우리는 코드를 사용하는 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받을 일반적으로 webhook.

관련 기사 :

SkyWalking 기반의 분산 추적 시스템 - 건축 환경

기반 분산 추적 시스템을 SkyWalking - 마이크로 모니터링 서비스

개별 공용 수에주의하십시오 : JAVA Rizhilu를

화신

추천

출처www.cnblogs.com/jianzh5/p/11823686.html