Sensu 모니터링에서 전화 일시 알림 및 대응 내역 관리

서버, 시스템 유지 보수에 감시가 필요합니다. 다만 감시하는 것 자체는 본질이 아니고, 장해가 발생했을 때, 어떻게 빨리 알아차리고 부드럽게 대응할 수 있는가가 중요합니다.

Sensu에서 메일뿐만 아니라 자체 장애 대응 관리 도구 "Reactio"라는 서비스를 이용하여 전화로 일제히 알림과 채팅에서 대응하는 방법을 공유합니다.

개요


  • Sense 설정
  • 초기 설정
  • handlers 등록

  • Reactio 설정
  • 프로젝트 API 키 등록
  • 인시던트 작성 프로그램 작성

  • 요약

  • Sensu 설정



    Sensu란? ( htps : // / 센스 아 p. rg/ )
    Ruby의 감시 소프트웨어. AWS등의 클라우드 환경에 강하고, API를 이용한 외부 제휴가 자랑.



    초기 설정



    초기설정과 각종 레퍼런스는 이 기사를 참고로 (할애)
    h tp : 작은 m/s 페스 노바/있어 MS/f9 아 8c9661861 C453 에어 d

    hadlers 등록



    참고) htps : // / 센스 아 p. 오 rg / 드 cs / ㅁ st / 껌
  • Sensu에 등록 된 모니터링 자원에 다음을 등록합니다

  • /etc/sensu/conf.d/reactio_handler.json
    {
      "reactio": {
        "api_key": "<APIキー>",
        "organization": "demo"
      },
      "handlers": {
        "reactio": {
          "type": "pipe",
          "command": "/etc/sensu/handlers/reactio_handler.rb",
          "serverities": ["critical"]
        }
      }
    }
    

    Reactio 설정



    Reactio란? ( h tps://레아 c치오. jp )
    감시 시스템으로 검지한 장해 대응을 신속하게 실시해 대응이 그대로 기록되어 관리할 수 있는 툴.



    프로젝트 API 키 등록



    본가의 블로그를 참고(할애)
    htp : // bg. Rea c Chio. jp/엔트리/2015/05/26/161408

    인시던트 작성 프로그램 작성



    reactio의 Ruby 버전 API 클라이언트를 사용하여 프로그램 만들기
    참고) htp : // bg. Rea c Chio. jp/엔트리/2015/05/13/172036

    reactio_handler.rb
    #!/usr/bin/env ruby
    #
    # Sensu Reactio Handler
    # ===
    
    require 'rubygems' if RUBY_VERSION < '1.9.0'
    require 'sensu-handler'
    require 'reactio'
    require 'timeout'
    require 'json'
    
    class ReactioHandler < Sensu::Handler
    
      def event_name
        "#{@event['client']['name']}/#{@event['check']['name']}"
      end
    
      def handle
        return unless @event['action'].eql?('create')
        return unless @event['check']['status'].eql?(2)
        begin
          timeout(10) do
            create_reactio_incident
            puts "reactio -- incident #{event_name} created."
          end
        rescue Timeout::Error
          puts "reactio -- timed out while attempting to #{@event['action']} a incident -- #{event_name}"
        end
      end
    
      private
    
        def create_reactio_incident
          reactio.create_incident(
            "#{event_name} #{@event['check']['output']}",
            detection: 'internal',
            notification_text: '対応をお願いします',
            notification_call: false
          )
        end
    
        def reactio
          Reactio::Service.new(
            api_key: settings['reactio']['api_key'],
            organization: settings['reactio']['organization']
          )
        end
    end
    

    이상으로 설정 완료입니다.

    요약



    실제로 장애가 일어났을 때의 흐름


  • 모니터링 대상 서버에 문제가 발생합니다
  • Sensu에서 감시 대상 서버의 상태를 검지하여 경고 발보
  • 이메일로 알림 수신
  • Reactio API에서 자동으로 인시던트 생성

  • Reactio로 인시던트 등록
  • 일제히 통지 기능으로 프로젝트 관계자에게 전화 통지 (음성 독서)

  • Reactio 그룹 채팅에 집계하여 장애 대응
  • 알림 대상, 알림 내용 및 채팅 대화가 모두 기록됩니다
  • 좋은 웹페이지 즐겨찾기