Add support for VPC FlowLogs
This commit is contained in:
parent
7a54650552
commit
a51dd26d2f
@ -1,5 +1,8 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 0.9.5
|
||||||
|
- Added support for VPC FlowLogs
|
||||||
|
|
||||||
## 0.9.4
|
## 0.9.4
|
||||||
- Improved S3 file type detection, also handles one line access logs
|
- Improved S3 file type detection, also handles one line access logs
|
||||||
- default fluentd upstream url scheme
|
- default fluentd upstream url scheme
|
||||||
|
16
index.py
16
index.py
@ -17,7 +17,7 @@ import boto3
|
|||||||
|
|
||||||
__author__ = "Stefan Reimer"
|
__author__ = "Stefan Reimer"
|
||||||
__author_email__ = "stefan@zero-downtime.net"
|
__author_email__ = "stefan@zero-downtime.net"
|
||||||
__version__ = "0.9.4"
|
__version__ = "0.9.5"
|
||||||
|
|
||||||
# Global alias lookup cache
|
# Global alias lookup cache
|
||||||
account_aliases = {}
|
account_aliases = {}
|
||||||
@ -188,6 +188,8 @@ def handler(event, context):
|
|||||||
logs = Queue("aws.cloudtrail")
|
logs = Queue("aws.cloudtrail")
|
||||||
elif re.match("RDSOSMetrics", awsLogsData['logGroup']):
|
elif re.match("RDSOSMetrics", awsLogsData['logGroup']):
|
||||||
logs = Queue("aws.rdsosmetrics")
|
logs = Queue("aws.rdsosmetrics")
|
||||||
|
elif re.match("vpcflowlog", awsLogsData['logGroup'], flags=re.IGNORECASE):
|
||||||
|
logs = Queue("aws.vpcflowlog")
|
||||||
else:
|
else:
|
||||||
logs = Queue("aws.cloudwatch_logs")
|
logs = Queue("aws.cloudwatch_logs")
|
||||||
|
|
||||||
@ -277,6 +279,18 @@ def handler(event, context):
|
|||||||
except (ValueError, TypeError, KeyError):
|
except (ValueError, TypeError, KeyError):
|
||||||
event['message'] = e['message']
|
event['message'] = e['message']
|
||||||
|
|
||||||
|
# VPC FlowLog ?
|
||||||
|
# <version> <account-id> <interface-id> <srcaddr> <dstaddr> <srcport> <dstport> <protocol> <packets> <bytes> <start> <end> <action> <log-status>
|
||||||
|
elif logs.tag == 'aws.vpcflowlog':
|
||||||
|
row = e['message'].split(" ")
|
||||||
|
|
||||||
|
# Skip over NODATA entries, what would be the point having these in ES ?
|
||||||
|
if row[13] == 'NODATA':
|
||||||
|
continue
|
||||||
|
|
||||||
|
parsed = {'interface-id': row[2], 'srcaddr': row[3], 'dstaddr': row[4], 'srcport': row[5], 'dstport': row[6], 'protocol': row[7],
|
||||||
|
'packets': row[8], 'bytes': row[9], 'start': row[10], 'end': row[11], 'action': row[12], 'log-status': row[13]}
|
||||||
|
|
||||||
# Fallback add raw message
|
# Fallback add raw message
|
||||||
else:
|
else:
|
||||||
event['message'] = e['message']
|
event['message'] = e['message']
|
||||||
|
Loading…
Reference in New Issue
Block a user