本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWSSupport-TroubleshootALB5XXErrors
說明
AWSSupport-TroubleshootALB5XXErrors Runbook 會診斷 Application Load Balancer 上的 HTTP 5XX 錯誤並進行故障診斷。它會分析 Amazon CloudWatch (CloudWatch) 指標和 Application Load Balancer 存取日誌,以識別根本原因並提供可行的建議。Runbook 涵蓋下列功能:
流量模式分析:使用 CloudWatch 指標偵測跨可用區域的流量分佈不均,以識別熱點和單一可用區域異常。
存取日誌診斷:透過從設定的 Amazon S3 儲存貯體擷取日誌檔案來擷取特定錯誤模式、錯誤原因和詳細診斷資訊,以精細疑難排解,以處理 Application Load Balancer 存取日誌。
錯誤特定分析:為每個 HTTP 5XX 錯誤類型提供目標診斷:
HTTP 500:身分驗證失敗、WAF 連線問題和 IDP 端點問題。
HTTP 502:目標連線問題、 AWS Lambda (Lambda) 函數錯誤、TLS 交涉失敗和目標取消註冊案例。
HTTP 503:空白目標群組和目標註冊問題。
HTTP 504:連線逾時、具有歷史基準比較的目標回應時間異常,以及全面的網路連線評估。
其他 5XX 錯誤:對標準錯誤類別未涵蓋的不常見 5XX 狀態碼和邊緣案例進行全面分析。
網路連線深入探討:對於 HTTP 504 錯誤, 會評估安全群組規則、網路 ACLs,以及 Application Load Balancer 與相同 AWS 區域和帳戶中目標之間的路由表組態。
自適應資料來源選擇:優先考慮可用於詳細錯誤診斷的存取日誌分析,並在日誌無法使用或不完整時自動回到 CloudWatch 指標。
限制
此 Runbook 具有下列限制:
連線檢查限制:僅針對與 Application Load Balancer 位於相同 AWS 區域和帳戶中的目標執行網路連線評估。跨帳戶或內部部署目標會收到一般連線指引。
存取日誌處理時間限制:存取日誌分析僅限於 9 分鐘的處理時段。如果超過,分析會停止,並根據目前處理的日誌提供結果。減少完成日誌分析的時間範圍。
Amazon S3 儲存貯體安全和位置需求:存取日誌處理需要 Amazon S3 儲存貯體符合安全和位置條件。當 Amazon S3 儲存貯體可公開存取時, Runbook 會略過存取日誌處理。公有儲存貯體狀態取決於儲存貯體政策或公有存取區塊組態。當 Amazon S3 儲存貯體不在與 Application Load Balancer 相同的 AWS 帳戶和區域中時, Runbook 也會略過處理。當這些檢查失敗時,執行手冊會自動回到 CloudWatch 指標型分析。
作為備用的指標:當未啟用存取日誌或日誌處理失敗或不完整時, Runbook 會自動回到具有較不精細診斷資訊的 CloudWatch 指標型分析。缺少存取日誌可能會影響根本原因偵測準確性。
歷史資料相依性:HTTP 504 回應時間異常偵測需要 7 天的歷史資料,才能進行基準比較。有限的歷史資料可能會影響偵測準確度。
額外費用
執行此 Runbook 會從 Amazon CloudWatch 查詢指標,並在啟用存取日誌時,從 Amazon S3 擷取物件。對於分析期間查詢的資料,標準 CloudWatch 和 Amazon S3 費用可能適用於 AWS 您的帳戶。如需定價的詳細資訊,請參閱 Amazon CloudWatch 定價
運作方式
Runbook 會執行下列驗證和分析步驟:
驗證指定的 Application Load Balancer 是否存在,並收集 Application Load Balancer 屬性,例如閒置逾時和存取日誌組態。
使用 CloudWatch 指標偵測熱點和單一可用區域錯誤異常。
啟用存取日誌且儲存貯體符合安全性和位置要求時,從設定的 Amazon S3 儲存貯體擷取和處理 Application Load Balancer 存取日誌。
診斷每個 HTTP 5XX 錯誤碼 (500、502、503、504 和其他),方法為使用存取日誌項目,或使用 CloudWatch 指標做為備用。
對於 HTTP 504 錯誤, 會評估 Application Load Balancer 與其目標之間的安全群組規則、網路 ACLs 和路由表組態。
將調查結果合併到報告中,其中包含建議和相關參考。
文件類型
自動化
擁有者
Amazon
平台
/
必要的 IAM 許可
AutomationAssumeRole 參數需要下列動作才能成功使用 Runbook。
s3:ListBuckets3:GetObjects3:GetBucketPolicyStatuss3:GetBucketPublicAccessBlocks3:ListAllMyBucketselasticloadbalancing:DescribeTargetGroupselasticloadbalancing:DescribeTargetHealthelasticloadbalancing:DescribeLoadBalancerselasticloadbalancing:DescribeTargetGroupAttributeselasticloadbalancing:DescribeLoadBalancerAttributeselasticloadbalancing:DescribeListenerselasticloadbalancing:DescribeRulesec2:DescribeSubnetsec2:DescribeInstancesec2:DescribeNetworkInterfacesec2:DescribeSecurityGroupsec2:DescribeNetworkAclsec2:DescribeRouteTablescloudwatch:GetMetricDatacloudtrail:LookupEventswafv2:ListWebACLswafv2:ListResourcesForWebACLlambda:GetFunctionConfiguration
IAM 政策範例:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3ReadAccess", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject", "s3:GetBucketPolicyStatus", "s3:GetBucketPublicAccessBlock", "s3:ListAllMyBuckets" ], "Resource": "*" }, { "Sid": "ELBReadAccess", "Effect": "Allow", "Action": [ "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeTargetHealth", "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeTargetGroupAttributes", "elasticloadbalancing:DescribeLoadBalancerAttributes", "elasticloadbalancing:DescribeListeners", "elasticloadbalancing:DescribeRules" ], "Resource": "*" }, { "Sid": "EC2ReadAccess", "Effect": "Allow", "Action": [ "ec2:DescribeSubnets", "ec2:DescribeInstances", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSecurityGroups", "ec2:DescribeNetworkAcls", "ec2:DescribeRouteTables" ], "Resource": "*" }, { "Sid": "MonitoringReadAccess", "Effect": "Allow", "Action": [ "cloudwatch:GetMetricData", "cloudtrail:LookupEvents" ], "Resource": "*" }, { "Sid": "WAFReadAccess", "Effect": "Allow", "Action": [ "wafv2:ListWebACLs", "wafv2:ListResourcesForWebACL" ], "Resource": "*" }, { "Sid": "LambdaReadAccess", "Effect": "Allow", "Action": [ "lambda:GetFunctionConfiguration" ], "Resource": "*" } ] }
指示
請依照下列步驟設定自動化:
-
在 Systems Manager 的文件下開啟 AWSSupport-TroubleshootALB5XXErrors
。 -
選擇 Execute automation (執行自動化)。
-
針對輸入參數,輸入下列內容:
-
AutomationAssumeRole (必要):
(IAM) 角色的 Amazon Resource Name AWS Identity and Access Management (ARN),允許 Systems Manager Automation 代表您執行動作。如果未指定角色,Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。
-
ALBArn (必要):
要調查之 Application Load Balancer 的 ARN。例如
arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/my-alb/50dc6c495c0c9188。 -
IssueStartTime (必要):
UTC 中問題的開始時間。使用 ISO 8601 時間戳記格式 (
YYYY-MM-DDTHH:MM:SSZ)。例如1970-01-01T00:00:00Z。 -
IssueEndTime (必要):
UTC 中問題的結束時間。使用 ISO 8601 時間戳記格式 (
YYYY-MM-DDTHH:MM:SSZ)。例如1970-01-01T00:00:00Z。
-
-
選擇 Execute (執行)。
-
自動化會啟動。
-
文件會執行下列步驟:
-
RunInitialChecks:在 Application Load Balancer 上執行初始檢查。初始檢查包括驗證 Application Load Balancer 是否存在、偵測熱點和單一可用區域錯誤、收集 HTTP 錯誤詳細資訊,以及檢查存取日誌組態。
-
ProcessAccessLogs:從 Amazon S3 儲存貯體擷取相關的 Application Load Balancer 存取日誌檔案,並處理它們以識別唯一的錯誤原因和代碼。只會針對識別的時間範圍處理一部分的存取日誌檔案。如果處理時間超過 9 分鐘的限制,則不會處理剩餘的日誌。
-
HTTP500ErrorIdentification:使用 CloudWatch 指標或可用的剖析存取日誌,識別 Application Load Balancer 產生 HTTP 500 錯誤的錯誤原因。
-
HTTP502ErrorIdentification:使用 CloudWatch 指標或可用的剖析存取日誌,識別 Application Load Balancer 產生 HTTP 502 錯誤的錯誤原因。
-
HTTP503ErrorIdentification:使用 CloudWatch 指標識別 Application Load Balancer 產生 HTTP 503 錯誤的錯誤原因。
-
HTTP504ErrorIdentification:使用 CloudWatch 指標或可用的剖析存取日誌,識別 Application Load Balancer 產生 HTTP 504 錯誤的錯誤原因。對於 HTTP 504 錯誤,步驟也會評估 Application Load Balancer 與其目標之間的安全群組規則、網路 ACLs 和路由表組態。
-
OtherHTTPErrorIdentification:識別 Application Load Balancer 產生的未分類 HTTP 錯誤的錯誤原因,方法是使用 CloudWatch 指標或可用的剖析存取日誌。
-
GenerateReport:從先前步驟的問題清單產生合併報告,包括熱點狀態、單一可用區域異常、錯誤診斷和建議。
-
-
完成後,請檢閱輸出區段以取得執行的詳細結果。
參考
Systems Manager Automation