臨近年關,兩個磁盤佔滿引起的服務下線

一口氣說兩個因爲磁盤空間不足引發的應用故障, 汗, 這兩個都發生在近日。

作爲拿起鍵盤一把梭的Coder, 開發--->部署-->收工--->心曠神怡,滋一口82年的可樂.

過了幾個月,服務突然下線了!CTO又有殺程序員祭天的理由了!

事故1:Azure App Service

Azure App Service運行一段時間之後,你也許會遇到磁盤佔滿的錯誤, 表象如下:

  1. 應用程序觸發System.Io.IOException:There is not enough space on the disk異常
  2. 你會在KUDU控制檯發現磁盤錯誤(紅色警告)
  3. 當你使用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本身卻忘記了控制日誌大小。

清理容器治標不治本,要從根本上解決問題,需要限制容器的日誌大小上限。

  1. 配置每個容器的docker-compose中的max-size
 logging:
      driver: "json-file"
      options:
        max-size: 100k
        max-file: "5"

  1. 全局設置
    新建/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"}
}

開發和運維,相愛相殺!相輔相成!相得益彰!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章