View a markdown version of this page

範例:Count HTTP 404 代碼 - Amazon CloudWatch Logs

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

範例:Count HTTP 404 代碼

您可以使用 CloudWatch Logs 監控 Apache 伺服器傳回 HTTP 404 回應的次數,HTTP 404 回應是找不到頁面的回應碼。您可能想要監控此次數以了解您的網站訪客找不到所需資源的頻率。假設您的日誌記錄的建置是包含每個日誌事件 (網站瀏覽) 的以下資訊:

  • 請求者 IP 地址

  • RFC 1413 身分

  • 使用者名稱

  • 時間戳記

  • 含請求資源和通訊協定的請求方法

  • 要請求的 HTTP 回應碼

  • 請求中傳入的位元組數

此範例看起來與以下類似:

127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 404 2326

您可以指定規則,該規則會嘗試比對該結構的事件是否含 HTTP 404 錯誤,如下範例所示:

使用 CloudWatch 主控台建立指標篩選條件
  1. 透過 https://console.aws.amazon.com/cloudwatch/ 開啟 CloudWatch 主控台。

  2. 在導覽窗格中,選擇 Log groups (日誌群組)。

  3. 選擇 Actions > Create metric filter (建立指標篩選條件)。

  4. 針對 Filter Pattern (篩選條件模式),輸入 [IP, UserInfo, User, Timestamp, RequestInfo, StatusCode=404, Bytes]。

  5. (選用) 若要測試篩選條件模式,請在 Test Pattern (測試模式) 下方,輸入一個或多個日誌事件,用以測試模式。每個日誌事件都必須在一行內,因為 Log event messages (日誌事件訊息) 方塊中使用換行來分隔日誌事件。

  6. 選擇 Next (下一步),然後針對 Filter Name (篩選條件名稱),輸入 HTTP404Errors。

  7. 在 Metric Details (指標詳細資料) 下的 Metric Namespace (指標命名空間) 中,輸入 MyNameSpace。

  8. 針對 Metric Name (指標名稱),輸入 ApacheNotFoundErrorCount。

  9. 確認 Metric Value (指標值) 為 1。這會指定針對每個 404 錯誤事件的計數增加 1。

  10. 針對 Default Value (預設值),輸入 0,然後選擇 Next (下一步)。

  11. 選擇 Create metric filter (建立指標篩選條件)。

使用 建立指標篩選條件 AWS CLI

在命令提示中,執行下列命令:

aws logs put-metric-filter \ --log-group-name MyApp/access.log \ --filter-name HTTP404Errors \ --filter-pattern '[ip, id, user, timestamp, request, status_code=404, size]' \ --metric-transformations \ metricName=ApacheNotFoundErrorCount,metricNamespace=MyNamespace,metricValue=1

在這個範例中,會使用到左右方括號、雙引號和字元字串 404 等常值字元。此模式需與被視為監控之日誌事件的整個日誌事件訊息相比對。

您可以使用 describe-metric-filters 命令來驗證指標篩選條件的建立。您應該會看到類似下面的輸出:

aws logs describe-metric-filters --log-group-name MyApp/access.log { "metricFilters": [ { "filterName": "HTTP404Errors", "metricTransformations": [ { "metricValue": "1", "metricNamespace": "MyNamespace", "metricName": "ApacheNotFoundErrorCount" } ], "creationTime": 1399277571078, "filterPattern": "[ip, id, user, timestamp, request, status_code=404, size]" } ] }

現在您可以手動張貼幾個事件:

aws logs put-log-events \ --log-group-name MyApp/access.log --log-stream-name hostname \ --log-events \ timestamp=1394793518000,message="127.0.0.1 - bob [10/Oct/2000:13:55:36 -0700] \"GET /apache_pb.gif HTTP/1.0\" 404 2326" \ timestamp=1394793528000,message="127.0.0.1 - bob [10/Oct/2000:13:55:36 -0700] \"GET /apache_pb2.gif HTTP/1.0\" 200 2326"

放置這些範例日誌事件後,您可以擷取在 CloudWatch 主控台中名為 ApacheNotFoundErrorCount 的指標。