範例:Count HTTP 404 代碼 - Amazon CloudWatch 日誌

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

範例:Count HTTP 404 代碼

使用 CloudWatch 日誌,您可以監視 Apache 服務器返回 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. 請在以下位置開啟 CloudWatch 主控台。 https://console.aws.amazon.com/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。