通過將SAE應用的標準輸出日誌或檔案日誌收集至Log ServiceSLS,實現日誌持久化儲存與彙總分析。
前提條件
已開通Log Service。未開通請登入Log Service控制台並按提示開通Log Service。
確保應用中每個執行個體至少預留0.25 Core CPU和250 MB記憶體的可用資源。
開啟日誌採集
操作路徑:
建立應用
在SAE應用列表中,在頂部選擇目標地區和命名空間,點擊建立應用。在應用基本資料頁面進行配置後,單擊下一步:進階設定。
對正在啟動並執行應用進行變更
警告重新部署應用後,該應用將會被重啟。為避免業務中斷等不可預知的錯誤,請在業務低峰期執行部署操作。
在SAE應用列表中,在頂部選擇目標地區和命名空間,點擊目標應用ID跳轉到應用詳情頁。在左側導覽列點擊基礎資訊,在右上方點擊部署應用。
對已停止的應用進行變更
在SAE應用列表中,在頂部選擇目標地區和命名空間,點擊目標應用ID跳轉到應用詳情頁。點擊基礎資訊,點擊修改應用配置。
展開日誌配置地區,開啟SLSLog Service。
配置說明:
選擇SLS資源,用於儲存SAE應用日誌:
建立SLS資源:系統將自動建立一個SLS Project,Project命名格式為
sae-<隨機字串>。使用已有的SLS資源:選擇一個已有的SLS Project,Project所在地區必須與應用相同。
日誌標籤:日誌標籤用於標識和分類日誌條目。開啟自訂日誌標籤後,選擇以下類型來配置Key和Value。如需配置多個Key和Value,點擊添加。
自訂:輸入變數名稱和變數值。
引用配置項:輸入變數名稱,然後選擇已有的配置項名稱和鍵。
重要此功能目前處於邀約測試階段。如果您想使用此功能,請在DingTalk群(群號:32874633)聯絡相關技術人員開通。
採集日誌類型:
檔案日誌(容器內日誌路徑):適用於應用將日誌寫入到檔案中的情境。需要在日誌源中配置容器內記錄檔的絕對路徑(含檔案名稱),例如/tmp/cjsc.log。支援正則匹配,例如/path/to/your/files/*.log。
容器標準輸出日誌:適用於應用將日誌列印到標準輸出的情境。日誌源顯示為
stdout.log。點擊+添加可以添加多條記錄。
如果使用已有的SLS資源,可以為每條記錄配置logstoreName和logtail。
重要請勿在日誌源的存放路徑中存放其他重要檔案,避免目錄內的檔案被覆蓋。例如,應用的可執行檔和資料已經存放在
/home/admin/app/中,如果將日誌的存放路徑設定為/home/admin/,會導致該路徑下的所有目錄和檔案被覆蓋。為避免上述情況發生,可以將日誌的存放路徑設定為/home/admin/log/。分批或灰階發布時,若僅變更Project或Logstore,在所有批次部署完成前日誌仍會被採集到舊目標,因為SLS不支援同一檔案被採集到不同的Project或Logstore中。
結果驗證:
在SAE應用列表中,在頂部選擇目標地區和命名空間,點擊目標應用ID跳轉到應用詳情頁。
點擊,查看SLS日誌。
在操作列點擊文件日志,跳轉到對應的日誌庫查看日誌的詳細內容。
去除日誌內容的首碼
採集容器標準輸出日誌時,原始的日誌內容包含多餘的首碼,您可以選擇以下方式去除日誌內容的首碼。
方式一:自訂Logtail配置
此功能僅對Logtail 2.0及以上版本有效。如果您想使用此功能,請在DingTalk群(群號:32874633)聯絡相關技術人員升級SAE應用的Logtail版本。
展開對應的日誌庫,單擊Logtail配置。
在Logtail配置頁面,單擊對應的Logtail配置條目。
單擊編輯,配置以下資訊,其餘參數保持預設。
展開處理配置地區,切分失敗處理方式設定為保留單行。
處理模式設定為SPL。
SPL語句的文字框中輸入
* | extend msg=regexp_replace(content, '(\S{33,36}\s\S+\sF\s)','') | project-away content。
單擊儲存。
新採集的日誌內容已經去除首碼。
方式二:標準輸出重新導向
建立應用
在SAE應用列表中,在頂部選擇目標地區和命名空間,點擊建立應用。在應用基本資料頁面進行配置後,單擊下一步:進階設定。
對正在啟動並執行應用進行變更
警告重新部署應用後,該應用將會被重啟。為避免業務中斷等不可預知的錯誤,請在業務低峰期執行部署操作。
在SAE應用列表中,在頂部選擇目標地區和命名空間,點擊目標應用ID跳轉到應用詳情頁。在左側導覽列點擊基礎資訊,在右上方點擊部署應用。
對已停止的應用進行變更
在SAE應用列表中,在頂部選擇目標地區和命名空間,點擊目標應用ID跳轉到應用詳情頁。點擊基礎資訊,點擊修改應用配置。
展開啟動命令地區,配置啟動命令實現標準輸出重新導向:
以鏡像部署的應用為例,在原有啟動命令之後增加
2>&1 | tee -a /home/admin/log/std.log(其中,/home/admin/log/std.log為記錄檔儲存路徑,可根據實際需求自訂)。例如,鏡像中原始啟動命令為
CMD ["./main"],則啟動命令配置為./main 2>&1 | tee -a /home/admin/log/std.log。如果鏡像環境不支援
tee命令,或者無需在控制台查看即時日誌,則可以將2>&1 | tee -a /home/admin/log/std.log替換為> /home/admin/log/std.log 2>&1。展開日誌配置地區,採集日誌類型設定為檔案日誌(容器內日誌路徑),日誌源設定為記錄檔儲存路徑,例如
/home/admin/log/std.log。單擊確定,等待應用部署完成。
新採集的日誌內容已經去除首碼。
設定環境變數提升Logtail採集效能
您可以在SAE控制台通過設定環境變數的方式來配置Logtail啟動參數。配置後,在開啟日誌收集服務的基礎上,Logtail採集效能將得到提升,有效解決記錄檔佔用記憶體大、日誌資料流量大和Logtail發送資料速率高等影響日誌採集的瓶頸問題。
您需要在環境變數設定地區內,選擇自訂或引用配置項的方式,並填寫變數名稱和變數值/變數引用。具體操作,請參見設定環境變數。
變數名稱的填寫規則
在需要配置的Logtail環境變數前增加sls_首碼。如下圖所示,例如您需要添加Logtail參數max_read_buffer_size,則配置的環境變數為sls_max_read_buffer_size。圖例表示每條日誌讀取的最大值為524288,單位:Byte。更多參數,請參見設定Logtail啟動參數。

環境變數與Logtail啟動參數對應關係
具體資訊,請參見環境變數說明。
配額與限制
一個阿里雲帳號最多可建立200個Logstore資源、50個Project資源。Log Service基礎資源的使用限制,會影響SAE應用的日誌收集結果,例如導致日誌儲存時間過短、日誌收集失敗等。更多使用限制,請參見基礎資源。
計費說明
使用Log Service會產生額外費用,請參見SLS計費說明。
常見問題
SAE日誌功能是否支援滾動日誌?
支援。您可以通過給記錄檔名稱添加萬用字元的方式滾動日誌。
檔案名稱萬用字元支援星號(*)和問號(?)。
查看檔案日誌時,在SLS控制台無資料展示,如何處理?
通常SLS預設查詢最近15分鐘內的查詢結果。如果SLS無資料顯示,建議使用Webshell查看您的應用是否有檔案日誌資訊。詳細操作,請參見使用Webshell診斷應用。
如果有日誌資訊,請加入釘群(釘群號:32874633),聯絡產品技術專家進行諮詢。
如果沒有日誌資訊,請檢查您的應用資訊。