本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
範例:計數 HTTP 404 代碼
您可以使用 CloudWatch Logs 監控 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 主控台建立指標篩選條件
-
在 開啟 CloudWatch 主控台https://console.aws.amazon.com/cloudwatch/
。 -
在導覽窗格中,選擇 Log groups (日誌群組)。
-
選擇
Actions
> Create metric filter (建立指標篩選條件)。 -
針對 Filter Pattern (篩選條件模式),輸入
[IP, UserInfo, User, Timestamp, RequestInfo, StatusCode=404, Bytes]
。 -
(選用) 若要測試篩選條件模式,請在 Test Pattern (測試模式) 下方,輸入一個或多個日誌事件,用以測試模式。每個日誌事件都必須在一行內,因為 Log event messages (日誌事件訊息) 方塊中使用換行來分隔日誌事件。
-
選擇下一步,然後在篩選條件名稱中輸入 HTTP404Errors。
-
在 Metric Details (指標詳細資料) 下的 Metric Namespace (指標命名空間) 中,輸入
MyNameSpace
。 -
針對 Metric Name (指標名稱),輸入
ApacheNotFoundErrorCount
。 確認 Metric Value (指標值) 為 1。這會指定針對每個 404 錯誤事件的計數增加 1。
針對 Default Value (預設值),輸入 0,然後選擇 Next (下一步)。
選擇 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。