在没有 Insights 的情况下监控 Lambda 临时存储的使用

问题描述 投票:0回答:1

我想监控我们的 Lambda 临时存储的使用情况,但我不想使用像 Lambda Insights 这样的 UI 工具。我们目前有一个日志扫描 python 脚本设置,它读取日志以获得运行时间、内存使用/限制等,而且还可以在日志中查找特定的内容,例如代码警告、错误和我们放入的其他彩蛋自己的日志。

有什么方法可以监控每个 Lambda 从日志中使用了多少分配的存储空间?我知道目前日志中没有任何内容,想知道是否有一些代码会将临时使用转储到日志中,以便我们可以从那里获取它。

python amazon-web-services aws-lambda amazon-cloudwatchlogs ephemeral-storage
1个回答
0
投票

发现可以在 Lambda 中利用

psutil
库来获得此值。经过测试,似乎工作完美。我为我的 Lambda 设置了临时内存限制,生成了假文件,将它们加载到
/tmp/
文件夹中,直到 Lambda 抛出错误,并发现它正确地报告了使用情况:

import psutil

def get_memory_usage():
    """Returns the current memory usage of the Lambda function in MB"""
    return round(psutil.Process().memory_info().rss/(1024*1024),1)

def lambda_handler(event,context):
    print(f'starting eph memory use: {get_memory_usage()}MB')
    #run code, etc
    print(f'ending ephemeral memory use: {get_memory_usage()}MB')
    return 'complete'

注意:如果您在本地计算机上运行此脚本,它将报告其他内存使用情况。在 Lambda 上,它报告短暂的使用情况。

另请注意,您运行的导入语句将使用临时内存,因此这就是我显示起始内存使用情况和最终内存使用情况的原因,以便我可以看到我的导入正在使用什么以及我的代码正在使用什么。显然,最高的数字是实际计入设定限制的数字。

另外,为了日志解析,我在最终值中只使用了完整的词

ephemeral
,这样我的日志解析脚本就可以很容易地找到它。

© www.soinside.com 2019 - 2024. All rights reserved.