函數計算支持與日志服務進行集成,為函數配置日志后,函數計算會自動收集日志,并把日志投遞到指定的日志庫。您可以在函數計算控制臺查看單請求日志、實例日志或函數日志,也可以在日志服務控制臺利用日志分析能力對日志進行自定義檢索。
背景信息
日志服務是阿里云提供的針對日志類數據的一站式服務。通過日志服務存儲函數日志,需要在函數對應的服務中配置日志項目和日志庫,并授予該服務訪問日志服務的權限。函數日志會打印到配置的日志庫中,同一地域的同一個服務下的所有函數日志都會打印到同一個日志庫中。
計費說明
函數計算不會為配置日志功能收取額外的費用,日志投遞到日志服務,日志服務會收取相關費用。更多信息,請參見計費概述。
配置日志功能
使用函數計算控制臺配置日志
前提條件
函數計算
可選:日志服務SLS
操作步驟
- 登錄函數計算控制臺,在左側導航欄,單擊服務及函數。
- 在頂部菜單欄,選擇地域,然后在服務列表頁面,單擊目標服務操作列的配置。
在編輯服務的日志配置區域,設置以下配置項,然后單擊保存。
說明如果您在創建服務時啟用日志功能,函數計算控制臺會自動創建以
aliyun-fc-cn-<region_id>
開頭的日志項目和該日志項目下的默認日志庫。該日志項目每個地域僅創建一個,不會重復創建,如系統查詢到該地域下曾經自動創建過日志項目,將直接使用。如果您在創建服務時未啟用日志功能,更新服務時需要手動選擇自定義日志項目和日志庫。
控制臺會自動啟用日志分割規則、請求級別指標和實例級別指標,并創建查詢日志需要的全部索引。
配置項
是否必填
說明
日志功能
是
是否啟用日志服務,取值說明如下:
啟用:啟用后,函數計算會將日志導入到您的日志項目。您可以在函數計算控制臺、日志服務控制臺查詢與檢索日志,追蹤并定位問題。
說明啟用日志功能時,需要在當前頁面的角色配置區域選擇一個可以訪問日志服務的角色。服務角色的更多信息,請參見授予函數計算訪問其他云服務的權限。
禁用:不啟用日志功能,無法持久化函數日志,無法對問題進行追蹤和定位。
配置方式
是
選擇自動配置或自定義配置。如果選擇自定義配置,日志項目和日志庫必填。
日志項目
是
指定存儲函數調用日志的目標日志項目。
日志庫
是
指定存儲函數調用日志的目標日志庫。
日志分割規則
否
是否啟用日志分割規則。取值說明如下:
啟用:啟用后,函數計算將按日志分割規則進行切分,切分成多個日志段,并逐條寫入日志服務。
默認的日志分割規則為
^.{0,2}\d{4}-\d{2}-\d{2}
,即匹配符合xxxx-xx-xx
格式的日期,其中x
代表數字。該規則將按照行首是否帶有日期進行切分,例如您的日志行首是2023-10-10,則該日志將被認為是一塊日志的首行,首行和接下來連續不帶日期的日志將被作為一條日志寫入到日志服務。禁用:不啟用日志分割規則,默認使用
\n
進行日志切分。
請求級別指標
否
是否將請求指標的日志導入日志庫,強烈建議啟用此功能。
取值說明如下:
啟用:啟用后,函數每次調用執行的指標信息如函數執行時間、函數占用內存、是否執行出錯、是否出現冷啟動、冷啟動各個步驟耗時等信息將投遞到您在日志配置時選擇的Logstore。函數計算的調用日志中可以基于這些指標展示請求列表,您也可以基于指標對請求進行自定義篩選,比如篩選全部錯誤請求,篩選出現冷啟動的請求。
禁用:無法查看請求執行的詳細信息。
實例級別指標
否
是否啟用實例級別指標功能。取值說明如下:
啟用:啟用后,函數實例的指標數據將會投遞到您在日志配置時選擇的Logstore。您可以查看函數實例維度的性能指標,如實例的CPU、內存、網絡IO等指標。函數計算會基于實例級別指標數據提供實例粒度的觀測能力,為您提供函數實例端到端的監控排查路徑。更多信息,請參見實例級別指標。
禁用:無法查看實例指標的詳細信息。
使用Serverless Devs工具配置日志
前提條件
操作步驟
創建代碼目錄,目錄結構如下所示。
. ├── code │ └── index.js └── s.yaml
s.yaml文件示例如下。
示例中字段logConfig用于配置日志功能,其中logstore和project需修改為您賬號下已存在的日志項目和日志庫。您也可以直接設置logConfig:auto,函數計算平臺將自動創建logstore和project,您無需再指定。
edition: 1.0.0 name: hello-world-app access: "default" vars: region: "cn-hangzhou" service: name: "hello-world-service" description: 'hello world by serverless devs' logConfig: # logstore和project需按照實際修改,您也可以使用logConfig:auto,自動創建project和logstore project: 'your-project' logstore: 'your-logstore' enableRequestMetrics: true enableInstanceMetrics: true role: 'acs:ram::<accountID>:role/aliyunfcdefaultrole' services: helloworld: component: fc props: region: ${vars.region} service: ${vars.service} function: name: "hello-world" description: 'hello world by serverless devs' runtime: nodejs14 codeUri: ./code handler: index.handler memorySize: 128 timeout: 60
執行以下命令部署應用。
sudo s deploy -y
執行成功后,您可以登錄函數計算控制臺查看函數已部署,以及日志功能已啟用。
查看調用日志
在函數詳情頁面,單擊調用日志,查詢當前函數的調用記錄。
您可以在頁面上方切換版本或別名,查詢指定函數版本或別名的日志。
調用請求列表頁簽或關鍵詞搜索頁簽均可以查看函數調用日志的內容。二者的區別如下所示:
調用請求列表
列表顯示函數調用時間、請求ID、調用結果、實例ID和函數的版本、別名等信息。如下圖所示:
您可以單擊對應的Request ID,查看請求詳情和日志詳情。
您可以單擊對應的實例 ID,查看實例的指標使用情況,例如CPU使用情況、內存使用情況和網絡流量等。
您可以單擊操作列的查看日志查看日志詳情,或單擊操作列的高級日志跳轉到日志服務控制臺查詢和分析日志。
關鍵詞搜索
列表顯示函數調用時間、日志內容和函數的版本、別名等信息,如下圖所示。您可以單擊操作列的日志上下文查找這條日志的若干條上下文日志,或單擊操作的日志庫跳轉到日志服務控制臺查詢和分析日志。
您可以在搜索框輸入關鍵詞查詢您所需的日志信息。例如您需要搜索包含文本
hello world
的日志,可以在搜索框輸入關鍵詞hello world
,搜索結果為所有包含該關鍵詞的日志行,如下圖所示。更多關于查詢關鍵詞的語法,請參見查詢語法。
相關文檔
您還可以通過調用SDK/API為函數配置日志,具體操作,請參見CreateService - 創建服務和LogConfig。