Alibaba Cloud 모니터링으로 Slack에 알림

하고 싶은 코토



Alibaba Cloud에서
CloudMonitor에서 감지한 알람
Function Compute에서 Slack으로 알림을 설정하고 싶습니다.


그건 그렇고
CloudMonitor란, AWS의 CloudWatch 같은 제품
Function Compute란, AWS의 Lambda 같은 제품

절차


  • Slack WebHook 준비
  • Function Compute 설정
  • Cloud Monitor 설정

  • 1. Slack Webhook 준비



    incoming webhook 에서 URL을 가져옵니다.

    참고 사이트: Slack의 Webhook URL 획득 절차

    2. Function Compute 설정



    Function Compute은 AWS Lambda와 같은 Serverless Computing입니다.
    현재 도쿄 지역에서는 6개의 런타임을 사용할 수 있습니다.


    트리거는 다음 7가지가 가능합니다.
    이번에는 HTTP 트리거 을 이용합니다.


    설정은 우선 다음과 같이 설정합니다.


    HTTP 트리거 파이썬 샘플을 참조하여 아래 코드를 업로드합니다.
    이번에는 Python3 런타임을 사용합니다.

    CloudMonitor 설정에서 사용하기 때문에 HTTP 트리거 URL을 복사합니다.


    main.py
    # -*- coding: utf-8 -*-
    
    import logging
    import json
    import requests
    import datetime
    
    def sendSlack(message):
      SLACK_WEBHOOK_URL = "{Your Webhook for Slack}"
      slack_message = {
        "username": "webhookbot",
        "text": message,
        "icon_emoji": ':grin:'
      }
      return requests.post(SLACK_WEBHOOK_URL, data=json.dumps(slack_message))
    
    def handler(environ, start_response):
        qs = environ["QUERY_STRING"]
        dict = {}
        for kv in qs.split("&"):
          [k, v] = kv.split("=")
          dict[k]=v
        message = dict["body"]
        dt_now = datetime.datetime.now()
        now=dt_now.strftime("%Y -%m-%d %H:%M:%S")
        description = 'DateTime: ' + now + '\n' + 'Msg: ' + message
        if environ["REQUEST_METHOD"] == 'POST':
          sendSlack(description)
          status = '200 OK'
          response_headers = [('Content-type', 'text/plain')]
          start_response(status, response_headers)
          return r
        else:
          return 'skip'
    

    3. CloudMonitor 설정



    CloudMonitor에서 알람 규칙을 선택합니다.



    알람 설정의 마지막 "알람 콜백"에 Function Compute URL을 입력합니다.
    URL 끝에 Query String을 사용하여 메시지를 삽입합니다.
    아래 URL에서 '?body=b1' 부분
    https://000000000.ap-northeast-1.fc.aliyuncs.com/2016-08-15/proxy/.../?body=b1
    



    알람 콜백 설명에는 "HTTP 만"이라는 설명이 있지만 HTTPS에서도 지원하는 것처럼 ...


    결과



    Slack에 대한 통지 결과는 다음과 같습니다.



    기타



    Function Compute를 사용하지 않고 Email을 사용하여 Slack에 직접 메일을 보낼 수 있습니다.
    메시지의 커스터마이즈는 할 수 없습니다만, 이용 용도에 따라서는 Email에서도 대응 가능합니다.

    좋은 웹페이지 즐겨찾기