LoginSignup
0
0

More than 5 years have passed since last update.

【AWS】CloudWatch logs をChatwork&Slack

Last updated at Posted at 2016-11-01

忘れないように。

今回は、

  • LogGroupにログ名
  • LogStreamにインスタンスIDとIP

を指定しています。

from __future__ import print_function

import base64
import json
import zlib
import logging
import pycurl
import urllib

from base64 import b64decode
from urllib2 import Request, urlopen, URLError, HTTPError

logger = logging.getLogger()
logger.setLevel(logging.INFO)

api_token       = "token"
room_id         = "id"
room_message    = "https://api.chatwork.com/".format(room_id)

incoming_url    = "https://hooks.slack.com/incoming"

def lambda_handler(event, context):
    data = zlib.decompress(base64.b64decode(event['awslogs']['data']), 16+zlib.MAX_WBITS)
    data_json = json.loads(data)
    send_message = data_json['logGroup'] + '\n' + data_json['logStream']

    for logEvent in data_json['logEvents']:
        logEvent_json = json.loads(json.dumps(logEvent, ensure_ascii=False))
        send_message = send_message + '\n' + logEvent_json['message']

    logger.info("send message is " + send_message)
    option = {'body': send_message}
    cw_headers = { 'X-ChatWorkToken' : api_token }
    cw_req = Request(room_message, urllib.urlencode(option), cw_headers)
    try:
        cw_response = urlopen(cw_req)
        cw_response.read()
    except HTTPError as e:
        logger.error("Request failed: %d %s", e.code, e.reason)
    except URLError as e:
        logger.error("Server connection failed: %s", e.reason)

    slack_message = {
        'channel': 'notice_dms',
        'text': send_message
    }
    sl_req = Request(incoming_url, json.dumps(slack_message))
    try:
        sl_response = urlopen(sl_req)
        sl_response.read()
    except HTTPError as e:
        logger.error("Request failed: %d %s", e.code, e.reason)
    except URLError as e:
        logger.error("Server connection failed: %s", e.reason)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0