日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

采集和查詢分析Nginx監控日志

通過配置Nginx內置的stub_status模塊,您可以啟用專用的狀態頁實時顯示Nginx服務器的關鍵指標,例如活躍的客戶端連接數(Active connections)、在讀取請求頭(Reading)、發送響應(Writing)以及處于等待狀態(Waiting)的連接數。您可以通過Logtail插件采集Nginx監控日志并進行查詢分析,持續監控Nginx集群的性能。

前提條件

已在服務器上安裝Logtail。具體操作,請參見安裝Logtail(Linux系統)安裝Logtail(Windows系統)

說明

目前支持Linux Logtail 0.16.0及以上版本,Windows Logtail 1.0.0.8及以上版本。

步驟一:配置stub_status模塊

說明

本文以Linux系統為例介紹操作步驟。

  1. 執行以下命令,安裝和啟動Nginx。

    sudo yum install -y nginx
    sudo systemctl restart nginx
  2. 執行以下命令確認Nginx已具備status功能

    nginx -V 2>&1 | grep -o with-http_stub_status_module

    返回以下信息,表示已支持status功能。

    with-http_stub_status_module
  3. 配置Nginx服務器。

    1. 打開Nginx的配置文件,在server {..}塊中添加以下代碼。關于nginx_status的更多信息,請參見Nginx status

      location /nginx_status {
          stub_status on;    #啟用stub_status模塊
          access_log   off;
          allow ${服務器IP};   #允許訪問的服務器IP
          deny all;          # 拒絕所有其他 IP 地址訪問這個狀態頁面
       }
    2. 執行以下命令,驗證配置結果。

      nginx -t
      sudo systemctl restart nginx
      curl http://${服務器IP}/nginx_status

      返回以下結果,表示配置成功。

      Active connections: 1
      server accepts handled requests
      2507455 2507455 2512972
      Reading: 0 Writing: 1 Waiting: 0                       

步驟二:采集Nginx監控日志

  1. 登錄日志服務控制臺

  2. 單擊控制臺頁面右側的快速接入數據卡片。

    image

  3. 接入數據頁面,查找自定義數據插件并單擊。image

  4. 選擇目標Project和Logstore,單擊下一步
  5. 創建機器組。
    • 如果您已有可用的機器組,請單擊使用現有機器組
    • 如果您還沒有可用的機器組,請執行以下操作(以ECS為例)。
      1. ECS機器頁簽中,通過手動選擇實例方式選擇目標ECS實例,單擊創建

        具體操作,請參見安裝Logtail(ECS實例)

        重要 如果您的服務器是與日志服務屬于不同賬號的ECS、其他云廠商的服務器和自建IDC時,您需要手動安裝Logtail。更多信息,請參見安裝Logtail(Linux系統)安裝Logtail(Windows系統)

        手動安裝Logtail后,您必須在該服務器上手動配置用戶標識。具體操作,請參見配置用戶標識

      2. 安裝完成后,單擊確認安裝完畢
      3. 創建機器組頁面,輸入名稱,單擊下一步

        日志服務支持創建IP地址機器組和用戶自定義標識機器組,詳細參數說明請參見創建IP地址機器組創建用戶自定義標識機器組

  6. 確認目標機器組已在應用機器組區域,單擊下一步

    重要

    創建機器組后立刻應用,可能因為連接未生效,導致心跳為FAIL,您可單擊自動重試。如果還未解決,請參見Logtail機器組無心跳進行排查。

  7. 數據源設置頁簽中,粘貼以下代碼到插件配置欄,其中${服務器IP}請替換成您的服務器IP地址,然后單擊下一步

    {
    "inputs": [
     {
          "type": "metric_http",
          "detail": {
              "IntervalMs": 60000,
              "Addresses": [
                  "http://${服務器IP}/nginx_status",
                  "http://${服務器IP}/nginx_status",
                  "http://${服務器IP}/nginx_status"
              ],
              "IncludeBody": true
          }
     }
    ],
    "processors": [
     {
          "type": "processor_regex",
          "detail": {
              "SourceKey": "content",
              "Regex": "Active connections: (\\d+)\\s+server accepts handled requests\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+Reading: (\\d+) Writing: (\\d+) Waiting: (\\d+)[\\s\\S]*",
              "Keys": [
                  "connection",
                  "accepts",
                  "handled",
                  "requests",
                  "reading",
                  "writing",
                  "waiting"
              ],
              "FullMatch": true,
              "NoKeyError": true,
              "NoMatchError": true,
              "KeepSource": false
          }
     }
    ]
    }                                
    • inputs為數據源配置,必選項。

      重要

      一個inputs中只允許配置一個類型的數據源。

    • processors為處理配置,用于解析數據。可選項,您可以配置一種或多種處理方式。

      如果當前的inputs配置無法滿足日志解析需求,您可以在插件配置中添加processors配置,即添加Logtail插件處理數據。例如提取字段、提取日志時間、脫敏數據、過濾日志等。更多信息,請參見使用Logtail插件處理數據

    重要參數說明如下表所示:

    參數

    類型

    是否必須

    說明

    type

    string

    數據源類型,固定為metric_http

    IntervalMs

    int

    每次請求的間隔,單位:ms。

    Addresses

    數組

    配置為您需要監控的URL列表。

    IncludeBody

    boolean

    是否采集請求體,默認值:false。如果為true,則采集后,將請求體內容存放在content字段中。

完成采集配置1分鐘后,即可查看日志,樣例如下所示。日志服務默認生成nginx_status儀表盤,展示查詢和分析結果。

image

步驟三:查詢和分析日志

  1. 登錄日志服務控制臺

  2. 在Project列表區域,單擊目標Project。

    image

  3. 在控制臺左側,單擊日志存儲,在日志庫列表中單擊目標Logstore。

    image

  4. 輸入查詢和分析語句,然后單擊最近15分鐘,設置查詢和分析的時間范圍。

    更多信息,請參見步驟一:輸入查詢和分析語句

    • 查詢日志

      • 查詢某IP地址的相關信息。

        _address_: 10.10.0.0
      • 查詢響應時間超過100毫秒的請求。

        _response_time_ms_ > 100
      • 查詢狀態碼不為200的請求。

        not _http_response_code_ : 200
    • 分析日志

      • 每5分鐘統計一次waiting、reading、writing、connection的平均值。

        *| select  avg(waiting) as waiting, avg(reading)  as reading,  avg(writing)  as writing,  avg(connection)  as connection,  from_unixtime( __time__ - __time__ % 300) as time group by __time__ - __time__ % 300 order by time limit 1440                       
      • 統計最大等待連接數排名前十的服務器。

        *| select  max(waiting) as max_waiting, _address_, from_unixtime(max(__time__)) as time group by address order by max_waiting desc limit 10                        
      • 統計IP地址數量。

        * | select  count(distinct(_address_)) as total                       
      • 統計請求失敗的IP地址數量。

        not _result_ : success | select  count(distinct(_address_))                        
      • 統計最近十次請求失敗的IP地址。

        not _result_ : success | select _address_ as address, from_unixtime(__time__) as time  order by __time__ desc limit 10                       
      • 每5分鐘統計一次請求總數。

        *| select  avg(handled) * count(distinct(_address_)) as total_handled, avg(requests) * count(distinct(address)) as total_requests,  from_unixtime( __time__ - __time__ % 300) as time group by __time__ - __time__ % 300 order by time limit 1440                       
      • 每5分鐘統計一次平均請求延遲。

        *| select  avg(_response_time_ms_) as avg_delay,  from_unixtime( __time__ - __time__ % 300) as time group by __time__ - __time__ % 300 order by time limit 1440                      
      • 統計請求成功的數量和失敗的數量。

        not _http_response_code_ : 200  | select  count(1)                     
        _http_response_code_ : 200  | select  count(1)