View a markdown version of this page

AWSSupport-TroubleshootALB5XXErrors - AWS Systems Manager Automation Runbook 參考

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

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 定價和 Amazon Simple Storage Service 定價。

運作方式

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:ListBucket

  • s3:GetObject

  • s3:GetBucketPolicyStatus

  • s3:GetBucketPublicAccessBlock

  • s3:ListAllMyBuckets

  • elasticloadbalancing:DescribeTargetGroups

  • elasticloadbalancing:DescribeTargetHealth

  • elasticloadbalancing:DescribeLoadBalancers

  • elasticloadbalancing:DescribeTargetGroupAttributes

  • elasticloadbalancing:DescribeLoadBalancerAttributes

  • elasticloadbalancing:DescribeListeners

  • elasticloadbalancing:DescribeRules

  • ec2:DescribeSubnets

  • ec2:DescribeInstances

  • ec2:DescribeNetworkInterfaces

  • ec2:DescribeSecurityGroups

  • ec2:DescribeNetworkAcls

  • ec2:DescribeRouteTables

  • cloudwatch:GetMetricData

  • cloudtrail:LookupEvents

  • wafv2:ListWebACLs

  • wafv2:ListResourcesForWebACL

  • lambda: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": "*" } ] }
指示

請依照下列步驟設定自動化:

  1. 在 Systems Manager 的文件下開啟 AWSSupport-TroubleshootALB5XXErrors。

  2. 選擇 Execute automation (執行自動化)。

  3. 針對輸入參數,輸入下列內容:

    • 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。

  4. 選擇 Execute (執行)。

  5. 自動化會啟動。

  6. 文件會執行下列步驟:

    • 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:

      從先前步驟的問題清單產生合併報告,包括熱點狀態、單一可用區域異常、錯誤診斷和建議。

  7. 完成後,請檢閱輸出區段以取得執行的詳細結果。

參考

Systems Manager Automation