临近年关,两个磁盘占满引起的服务下线
一口气说两个因为磁盘空间不足引发的应用故障, 汗, 这两个都发生在近日。
作为拿起键盘一把梭的Coder, 开发--->部署-->收工--->心旷神怡,滋一口82年的可乐.

过了几个月,服务突然下线了!CTO又有杀程序员祭天的理由了!
事故1:Azure App Service
Azure App Service运行一段时间之后,你也许会遇到磁盘占满的错误, 表象如下:
- 应用程序触发System.Io.IOException:There is not enough space on the disk异常
- 你会在KUDU控制台发现磁盘错误(红色警告)
- 当你使用Visual Studio部署新的代码,你会得到失败结果。
 ERROR_NOT_ENOUGH_DISK_SPACE: Web deployment task failed. (Web Deploy detected insufficient space on disk)
每个App Service Plan只获得与定价层匹配的磁盘空间分配,故面向Azure App Service开发的应用需要关注空间消耗!
| Shared | Basic | STANDARD | PREMIUM | |
|---|---|---|---|---|
| Disk Space | 1G | 10G | 50G | 250G | 
相同App Service Plan内的web应用共享你付费套餐里面的磁盘空间,如果磁盘文件大小超限,你会看到上面的错误!
因为一个App Service Plan可支撑多个Web应用, 你可以在每个应用的[App Service Paln]--->[Quotas] 配置节下面发现当前应用占用的磁盘空间。
一个常规的Web应用包含如下内容:
| --- | --- | 描述 | 转移方案 | 
|---|---|---|---|
| 1 | WebSite Content | 刚需 | |
| 2 | App_Data | 存储持久化数据/图片 | 尝试转移到Azure其他存储组件 | 
| 3 | Log Files | 本地日志文件 | 尝试转移到Azure其他存储组件 | 
Azure Storage Account为任意数据提供可扩展、持久化的云存储、备份和恢复解决方案,包括非结构化文本或二进制数据,如视频、音频和图像。
本文点到为止,演示将日志数据转移到Azure Storage Container (非结构化数据存储)。
# 还是以常见的NLog为蓝本:
# 引入`NLog.Extensions.AzureBlobStorage`库文件
  <target xsi:type="AzureBlobStorage"
        name="Cloud_applogs"
        layout="${format}"
        connectionString="********"
        container="actionlogs" 
        blobName="applogs/applog-${date:format=yyyyMMdd}.log"  />
# 其中的ConnectionString参见[Settings]-->[Access Keys]  
 <logger name ="LoggingActionFilter" minlevel="Info" writeTo="Cloud_applogs" />
事故2: Docker
Docker默认以Json的形式将日志存储到/var/lib/docker/containers
使用 docker system  df命令查看Docker磁盘占用

使用docker  ps --size定位每个容器的磁盘占用

我手上的应用,部署了EFK采集数据,并为ES的数据存储存储了较大的独立磁盘, 但是对EFK本身却忘记了控制日志大小。
清理容器治标不治本,要从根本上解决问题,需要限制容器的日志大小上限。
- 配置每个容器的docker-compose中的max-size
 logging:
      driver: "json-file"
      options:
        max-size: 100k
        max-file: "5"
- 全局设置
 新建/etc/docker/daemon.json,若有就不用新建了,添加log-dirver和log-opts参数
# vim /etc/docker/daemon.json
{
  "log-driver":"json-file",
  "log-opts": {"max-size":"500m", "max-file":"3"}
}

开发和运维,相爱相杀!相辅相成!相得益彰!
本文来自博客园,作者:{有态度的马甲},转载请注明原文链接:https://www.cnblogs.com/JulianHuang/p/14202977.html
欢迎关注我的原创技术、职场公众号, 加好友谈天说地,一起进化 
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号