本文介紹使用SLS對MSFE日志進行收集、監控和報警。

背景信息

MSFE是多活流量統一入口,采用多臺ECS集群化部署,一臺ECS部署一個Tengine進程。您可以使用日志服務(SLS),對每臺ECS上的Tengine日志進行統一收集和存放,能夠有效追蹤因Tengine日志滾動覆蓋導致的問題。同時便于對日志搜索查詢,以及基于日志進行問題排查和數據分析。同時,您還可以通過SLS配置Error日志報警規則,以便在Tengine自身或后端服務器出現問題能夠及時發現并處理,從而規避風險。

接入層日志

Tengine進程會打印tengine-access_log和tengine-error_log日志。日志采用滾動覆蓋的方式,滾動覆蓋保留的文件數為7,全部日志文件最大會占用21 G磁盤空間。

  • 日志路徑:/home/admin/tengine/logs
  • 日志文件名:tengine-access_log和tengine-error_log
wert

步驟一:接入前準備

  1. 登錄日志服務控制臺
  2. 創建項目(Project)。
    1. 在Project列表區域,單擊創建Project
    2. 創建Project面板中,按照如下說明配置參數,其他參數均可保持默認配置。
      參數描述
      Project名稱Project的名稱,全局唯一。創建Project成功后,無法更改其名稱。
      所屬地域Project的數據中心。建議選擇與ECS相同的地域,即可使用阿里云內網采集日志,加快采集速度。

      創建Project后,無法修改其所屬地域,且日志服務不支持跨地域遷移Project。

    3. 單擊創建
  3. 創建日志庫(Logstore)。
    創建Project完成后,系統會提示您創建一個Logstore。

    創建Logstore面板中,按照如下說明配置參數,其他參數均可保持默認配置。這里創建的Project名稱為msha-hz-demo,創建的Logstore名稱為access。

    qwert
    參數描述
    Logstore名稱Logstore的名稱,在其所屬Project內必須唯一。創建Logstore成功后,無法更改其名稱。
    Shard數目日志服務使用Shard讀寫數據。

    一個Shard提供的寫入能力為5 MB/s、500次/s,讀取能力為10 MB/s、100次/s。如果一個Shard就能滿足您的業務需求,您可配置Shard數目1

    自動分裂Shard開啟自動分裂功能后,如果您寫入的數據量超過已有Shard服務能力,日志服務會自動根據數據量增加Shard數量。

    如果您確保配置的Shard數量已滿足業務需求,可關閉自動分裂Shard開關。

步驟二:配置access_log日志收集

  1. 單擊日志庫access左側的wr圖標,展開該日志庫。然后單擊數據接入左側的wr圖標并展開。
  2. 將鼠標放置logtail配置區域,然后單擊logtail配置右側的wed圖標,添加數據接入。
    說明 通過Logtail配置頁面安裝Logtail日志收集插件以及配置要收集的日志路徑等,Logtail日志插件信息請參見Logtail日志插件數據采集
  3. 在彈出的快速數據接入面板,單擊Nginx-文本日志
    wedg
  4. Nginx頁面單擊ECS機器頁簽,在實例選取方式區域選擇手動選擇實例或者指定實例資源組,然后選擇需要進行日志收集的ECS實例,單擊左下角的立即執行,然后單擊右下角的確定安裝完畢
    wqed
  5. 在第②步中輸入機器組名稱,然后單擊下一步,進入第③步機器組配置頁面,在我的機器組區域,選擇源機器組,然后單擊下一步
  6. 在第④步Logtail配置頁簽,設置相關參數,完成配置。
    werty

    配置日志access_log,其中日志格式配置如下:

    log_format proxyformat
     "$status|$upstream_status|$remote_addr|$upstream_addr|$request_time_usec|$upstream_response_time|$time_local|$request_method|$scheme://$log_host:$server_port$request_uri|$body_bytes_sent|$http_referer|$http_user_agent|$http_x_forwarded_for|$http_accept_language|$connection_requests|$eagleeye_traceid|$cell|$ups|$ufe_code|$local_cell|$cell_key|$cell_router_id|$router_rule|$local|$https_host_mode|$https_redirect_mode";

    日志樣例為:

    200|200|127.0.xx.xx|115.29.xx.xx:80|16905|0.017|09/Jul/2021:19:49:29
    +0800|GET|http://47.99.xx.xx:80/get?code=200|32|-|curl/7.29.0|-|-
    |1|c0a80964162583136942xxxxxe6637|center|47_99_xx_xx@get_center_default|A1|1|||5bec72a6-8e0c-4ad1-9846-87xxxxxbd034_unitcell_type|default|0|0_http
  7. 返回日志庫頁面,單擊wert圖標,查看access_log日志數據。
    wer

    access_log日志數據詳情,請參見查詢和分析日志數據

步驟三:配置error_log日志收集

配置error_log日志收集的步驟與配置access_log日志收集的步驟類似,因此請參見步驟二:配置access_log日志收集完成error_log日志的配置與收集。配置error_log日志過程中需注意以下幾點:

  • 建議選擇與access_log日志不同的Logstore對error_log日志進行logtail配置,以便進行獨立的error_log報警配置。
  • 由于error_log日志規則不是結構化的,因此在第④步Logtail配置頁簽設置相關參數時,其中模式參數選擇極簡模式即可,配置完成后,返回日志庫頁面,單擊wert圖標,查看error_log日志數據。error_log日志數據詳情,請參見查詢和分析日志數據wsxc

步驟四:配置error_log日志報警

若出現error_log日志,說明Tengine自身或后端服務器存在報錯。建議您配置error_log報警規則,以便快速發現和處理報錯問題。

  1. 日志庫頁面,單擊werp圖標,查看error_log日志的監控信息。
    wsxa
  2. 登錄云監控控制臺
  3. 在左側導航欄單擊云產品監控
  4. 在搜索框中輸入日志服務,然后單擊日志服務
  5. 單擊目標Project名稱右側操作LogStore列表,然后單擊對應LogStore操作列的監控圖表
  6. 日志服務頁面的總體QPS(個)區域右側單擊er圖標。然后在彈出的創建報警規則頁面,根據相關參數,完成報警配置。具體操作,請參見創建報警規則