Skip to content

Commit

Permalink
set up payload for healthcheck
Browse files Browse the repository at this point in the history
  • Loading branch information
gregmundy committed Sep 6, 2020
1 parent 439be24 commit a718640
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 53 deletions.
1 change: 0 additions & 1 deletion mci/api/healthcheck.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ def get_request_handler(self, headers):

return request_handler

@token_required(Config.get_oauth2_provider())
def get(self):
""" Handle GET request from API.
Expand Down
124 changes: 72 additions & 52 deletions mci/app/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,35 @@
from mci.config import ConfigurationFactory
from mci_database.db import db

# logger configuration
formatter = logging.Formatter(
fmt='[%(asctime)s] [%(levelname)s] %(message)s', datefmt="%a, %d %b %Y %H:%M:%S")

try:
aws_access_key_id = os.getenv('AWS_ACCESS_KEY_ID')
aws_secret_access_key = os.getenv('AWS_SECRET_ACCESS_KEY')
region_name = os.getenv('AWS_REGION_NAME')
logging.getLogger().setLevel(logging.INFO)
boto3_session = boto3.Session(aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key,
region_name=region_name)
logger = logging.getLogger(__name__)
handler = watchtower.CloudWatchLogHandler(
boto3_session=boto3_session, log_group=os.getenv('AWS_LOG_GROUP'), stream_name=os.getenv('AWS_LOG_STREAM'))
formatter = logging.Formatter(
fmt='[%(asctime)s] [%(levelname)s] %(message)s', datefmt="%a, %d %b %Y %H:%M:%S")
handler.setFormatter(formatter)
handler.setLevel(logging.INFO)
logger.addHandler(handler)
except Exception as e:
logging.getLogger().setLevel(logging.INFO)
logger = logging.getLogger(__name__)
handler = logging.StreamHandler()
handler.setFormatter(formatter)
handler.setLevel(logging.INFO)
logger.addHandler(handler)
logger.warning(
f'Failed to configure CloudWatch due to the following error: {str(e)}')


def handle_errors(e):
if isinstance(e, OAuth2ProviderError):
Expand Down Expand Up @@ -52,6 +81,26 @@ def handle_errors(e):
return response


def after_request(response):
info = {
'remote_addr': request.remote_addr,
'request_time': str(datetime.utcnow()),
'method': request.method,
'path': request.path,
'scheme': request.scheme.upper(),
'status_code': response.status_code,
'status': response.status,
'content_length': response.content_length,
'user_agent': str(request.user_agent),
'payload': response.json
}
if info['status_code'] >= 200 and info['status_code'] < 300:
logger.info(info)
else:
logger.error(info)
return response


def create_app():
app = Flask(__name__)
app.config.from_object(ConfigurationFactory.from_env())
Expand Down Expand Up @@ -80,57 +129,28 @@ def create_app():
endpoint='education_ep')

app.register_error_handler(Exception, handle_errors)
app.after_request(after_request)

# logger configuration
formatter = logging.Formatter(
fmt='[%(asctime)s] [%(levelname)s] %(message)s', datefmt="%a, %d %b %Y %H:%M:%S")

try:
aws_access_key_id = os.getenv('AWS_ACCESS_KEY_ID')
aws_secret_access_key = os.getenv('AWS_SECRET_ACCESS_KEY')
region_name = os.getenv('AWS_REGION_NAME')
logging.getLogger().setLevel(logging.INFO)
boto3_session = boto3.Session(aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key,
region_name=region_name)
logger = logging.getLogger(__name__)
handler = watchtower.CloudWatchLogHandler(
boto3_session=boto3_session, log_group=os.getenv('AWS_LOG_GROUP'), stream_name=os.getenv('AWS_LOG_STREAM'))
formatter = logging.Formatter(
fmt='[%(asctime)s] [%(levelname)s] %(message)s', datefmt="%a, %d %b %Y %H:%M:%S")
handler.setFormatter(formatter)
handler.setLevel(logging.INFO)
logger.addHandler(handler)
except Exception as e:
logging.getLogger().setLevel(logging.INFO)
logger = logging.getLogger(__name__)
handler = logging.StreamHandler()
handler.setFormatter(formatter)
handler.setLevel(logging.INFO)
logger.addHandler(handler)
logger.warning(
f'Failed to configure CloudWatch due to the following error: {str(e)}')

@app.after_request
def after_request(response):
info = {
'remote_addr': request.remote_addr,
'request_time': str(datetime.utcnow()),
'method': request.method,
'path': request.path,
'scheme': request.scheme.upper(),
'status_code': response.status_code,
'status': response.status,
'content_length': response.content_length,
'user_agent': str(request.user_agent),
'payload': {
'last_name': request.json['last_name'] if 'last_name' in request.json else '',
'gender_id': request.json['gender_id'] if 'gender_id' in request.json else ''
}
}
if info['status_code'] >= 200 and info['status_code'] < 300:
logger.info(info)
else:
logger.error(info)
return response

# @app.after_request
# def after_request(response):
# info = {
# 'remote_addr': request.remote_addr,
# 'request_time': str(datetime.utcnow()),
# 'method': request.method,
# 'path': request.path,
# 'scheme': request.scheme.upper(),
# 'status_code': response.status_code,
# 'status': response.status,
# 'content_length': response.content_length,
# 'user_agent': str(request.user_agent),
# 'payload': {
# 'last_name': request.json['last_name'] if 'last_name' in request.json else '',
# 'gender_id': request.json['gender_id'] if 'gender_id' in request.json else ''
# }
# }
# if info['status_code'] >= 200 and info['status_code'] < 300:
# logger.info(info)
# else:
# logger.error(info)
# return response
return app

0 comments on commit a718640

Please sign in to comment.