Promoetheus 모니터링으로 인해 발생한 경고를 슬랙에 게시

개시하다

  • Promeetheus 감시 서비스에서 경보 발생 시 슬랙에 내용을 알리는 절차를 배워 내용을 정리했다.
  • 등장인물

  • 이번에 Promeetheus의 감시를 진행할 때 어떤 플랫폼을 사용할지 아래 그림과 같다.우선, Proometheus는 감시하고 싶은 서비스와 기계의 도량을 얻는 역할을 한다.감시 규칙의 설정과 감시 결과도 통지했다.Alert 관리자는 실제 서비스를 운용하는 구성원에게 경보를 알리는 역할을 한다. Alert 관리자는 Promoetheus가 보낸 감시 결과에 대한 통지를 받고 설정된 규칙에 따라 통지 구성원을 결정하고 메일과 슬랙을 통지한다.다른 관련 플랫폼으로는 감시 대상 기기의 CPU 사용률, 메모리 등이 프로모더스에 특정 종류의 도량을 제공하는 익스포터, 프로모더스가 도량을 시각화하는 도구인 그래파나 등이 존재한다.표준 문서에도 시스템 구성에 대한 설명이 기재되어 있으니 구체적인 내용을 배우고 싶은 분들은 한번 보세요.

  • 절차.


    시나리오

  • 이번에 우리는 Promeetheus 측에서 반드시 경보가 발생할 것이라는 감시 규칙을 설정하고 경보가 Alert 관리자의 UI를 통해 확인할 수 있는지, 그리고 지정한 슬랙 채널에 경보 내용을 발표할 수 있는지 검증했다.또한 Promaetheus와 Alert 관리자가 로컬 PC(Mac)에서 시작하는 것이 전제 조건이다.
  • 다운로드

  • Promeetheus와 Alert 관리자는 링크에서 최신 버전을 다운로드할 수 있다.이후의 설명에서 다운로드를 진행할 때 이 사이트에서 다운로드하세요.
  • Proometheus 구성

  • 먼저 Proometheus 설정을 수행합니다.Promoetheus(이번에 자신이 다운로드한 것은prometheus-2.2.2.2.26.0.darwin-amd64.tar.gz)를 해동한 후 생성된 디렉터리로 이동하면prometheus.yml의yaml 파일이 존재한다. 다음과 같다.
  • prometheus.yml
    global: # (1)
      scrape_interval:     15s
      evaluation_interval: 15s
    
    alerting: # (2)
      alertmanagers:
      - static_configs:
        - targets:
          - localhost:9093
    
    rule_files: # (3)
      - rules.yml
    
    scrape_configs: # (4)
      - job_name: 'prometheus'
        static_configs:
        - targets: ['localhost:9090']
    
  • 설정은 크게 네 부분으로 구성된다.각 부분의 설정 내용은 다음과 같다.
  • 번호 매기기
    설명
    (1)
    일반 설정.scrape_interval는 감시 대상에서 (권적) 도량을 얻는 간격이고, evaluation_interval는 감시 규칙을 응용하는 간격을 나타낸다.
    (2)
    Alertmanage를 설정합니다.이번 Alert 관리자는 localhost:9093에서 시작되었기 때문에 targets 필드에 이 설정을 기술합니다.
    (3)
    규칙 설정을 모니터링합니다.이번에는 동일한 디렉토리 레이어rules.yml에 포함된 모니터링 규칙이 적용됩니다.
    (4)
    감시 대상의 설정.이번에는 Promoetheus 자체를 감시 대상으로 해 가동 상태localhost:9000를 설정했다.
  • 다음에 감시 규칙을 설정합니다.prometheus.yml와 같은 디렉터리 단계에서 다음과 같은 내용의 파일을 만듭니다rules.yml.
  • rules.yml
    groups:
      - name: test
        rules:
          - alert: DeadMansSwitch # アラート名
            expr: vector(1)
            for: 1m
            labels:
              severity: __severity__
            annotations:
              summary: テストアラート
              description: このアラートは常に発生します
    
  • 주요 항목의 설명은 다음과 같다.
  • 항목
    설명
    expr
    감시 규칙을 구체적으로 표현하는 평가식.평가 공식의 평가 결과가 진짜인지 가짜인지 확인하고 발생 여부를 경고한다.이번에는 반드시 경보가 발생할 것이라는 설정을 했다.
    for
    경보가 얼마나 지속되는지 알릴 수 있도록 설정합니다.이번에는 경보가 1분 동안 계속 발생하는 상황에서 통지할 것이다.
    labels
    경고 레이블.
    annotations
    경고 발생에 대한 설명입니다.이번에 슬랙을 알릴 때 여기에 설정된 값을 사용합니다.
  • 위에서 설정한 후 다음 명령을 실행합니다.
  • $ ./prometheus
    

    Alert 관리자 설정

  • Alert manager의 설정은 다음과 같습니다.Alertmanager(이번에 자신이 다운로드한 것은alertmanager-0.2.1.0.darwin-amd64.tar.gz)를 해동한 후 생성된 디렉터리로 이동하면 alertmanager.yml의yaml 파일이 있습니다. 다음과 같습니다.
  • alertmanager.yml
    global:
      slack_api_url: '${通知先 Slack チャンネルの Incoming Webhook URL }'
    
    route:
      receiver: 'slack-notifications' # (1)
    
    receivers:
    - name: 'slack-notifications' # (2)
      slack_configs:
      - channel: '${通知先の Slack チャンネル名}'
        title: "{{ range .Alerts }}{{ .Annotations.summary }}\n{{ end }}" # (3)
        text: "{{ range .Alerts }}{{ .Annotations.description }}\n{{ end }}"
    
  • (1)의 route 문장에 기본 알림 목적지를 설정합니다.이번에는 (2) 에서 설정한 slack-notifications 알림 목표를 기본값으로 합니다.또 Promeetheus에서 여러 개의 경보를 알렸다고 가정하고 (3)에서 range 통지를 사용한 경보 내용을 모두 발령하는 설정을 했다.
  • 위에서 설정한 후 다음 명령을 실행합니다.
  • $ ./alertmanager
    

    실행 결과


  • 먼저 UI에서 경고가 발생했는지 확인합니다.브라우저 액세스http://localhost:9093/를 사용하면 에 설정된 경고가 알림되었는지 확인하는 화면이 표시됩니다.


  • 이어 슬랙 채널이 경보 내용을 알렸는지 확인했다.결과 알림 대상이 설정한 채널은 다음과 같은 내용을 확인했다.

  • 좋은 웹페이지 즐겨찾기