Skip to content

Instantly share code, notes, and snippets.

@perryism
Created September 9, 2019 23:43
Show Gist options
  • Save perryism/0543e720216cd4f2394bac151e2d2a11 to your computer and use it in GitHub Desktop.
Save perryism/0543e720216cd4f2394bac151e2d2a11 to your computer and use it in GitHub Desktop.
get errors from elastic search failed logs
import json
import base64
def each_data(stream):
for line in stream.readlines():
data = json.loads(line)
data['errorMessage'] = json.loads(data['errorMessage'])
yield data, json.loads(base64.b64decode(data['rawData']).decode())
import boto3
BUCKET=''
PREFIX=''
def s3_streams(bucket, prefix):
s3 = boto3.client('s3')
response = s3.list_objects(Bucket=bucket, Prefix=prefix)
for key in map(lambda x: x['Key'], response['Contents']):
print("reading %s"%key)
yield io.BytesIO(get_log_from_s3(s3, key, bucket))
import gzip, io
def get_log_from_s3(s3, key, bucket):
response = s3.get_object(Bucket=BUCKET,
Key=key)
gzipped_body = response['Body'].read()
return gzip.decompress(gzipped_body)
errors = {}
# FOCUS ON THIS ONLY
def per_error(data, event):
print(event)
print(data['errorMessage']['reason'])
for stream in s3_streams(BUCKET, PREFIX):
for data, event in each_data(stream):
per_error(data, event)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment