提问者:小点点

ECS Fargate-设备上没有剩余空间


我已经部署了我的asp。net核心应用程序,一切正常。我正在使用awslogs驱动程序,日志已正确发送到cloudwatch。但经过几天的正确工作,我现在只看到一种日志,如下所示:

因此,由于没有空间,没有显示应用程序日志。如果我更新ECS服务,日志记录会再次开始工作,表明磁盘已被清理。

此链接表明 awslogs 驱动程序不占用空间,而是将日志发送到 cloudwatch。https://docs.aws.amazon.com/AmazonECS/latest/userguide/task_cannot_pull_image.html

是否有人也面临过这个问题,并知道如何解决这个问题?


共2个答案

匿名用户

您需要将AWS日志配置中的“LibraryLogFileName”参数设置为null。

因此,在. Net Core应用程序的appsettings.json文件中,它看起来像这样:

"AWS.Logging": {
  "Region": "eu-west-1",
  "LogGroup": "my-log-group",
  "LogLevel": {
    "Default": "Information",
    "Microsoft": "Warning",
    "Microsoft.Hosting.Lifetime": "Information"
  },
  "LibraryLogFileName": null
}

匿名用户

这取决于您如何在应用程序中配置日志记录。AWSlgs驱动程序只是抓取发送到控制台的所有输出并将其保存到CloudWatch。NET不一定知道这一点,并将继续像以前一样编写日志。

可能 .NET 仍在将日志写入它本来会位于的任何位置。

如何排除故障和解决问题的建议:

  • 首先,在本地运行应用程序并检查日志文件是否保存在任何位置
  • 其次,最好运行一个容器测试,看看日志文件是否也保存在那里<ul>
  • 确保您的计算机上安装了docker
  • 从运行fargate的ECR下载容器映像。<ul>
  • docker拉{来自ECR的图像URI}
  • 做一些你知道会遗传一些日志的任务

最后,一旦您确定日志正在写入某处的文件,请选择以下选项之一

  1. 添加一些标志,可以选择指定该标志以禁用对文件的日志记录。在容器内运行应用程序时使用它。
  2. 实现一些逻辑来定期或一旦日志文件达到一定大小就清理它们。(请记住,ECS容器具有高达20GB的本地存储空间)
  3. 禁用所有文件记录(在我看来不是一个好的选择)

祝你好运!