我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
将 Windows 故障转移群集日志导出到 CloudWatch
在这篇深入的博客文章中,我们将逐步介绍如何 使用 Amazon
简介
Windows 事件查看器日志是监控 Windows 系统和对其进行故障排除的关键方面。但是,手动查看这些日志可能很耗时且容易出错。通过使用 Amazon CloudWatch 代理和 Amazon SNS,您可以自动捕获和分析事件查看器日志,并在发生关键系统事件时接收近乎实时的警报。
另请看一 看 Amazon
解决方案概述
图 1。解决方案概述
该解决方案包括以下步骤:
-
创建
Windows 服务器故障转移群集 (WSFC)。 - 使用亚马逊 CloudWatch 代理将事件查看器 WSFC 日志发布到亚马逊 CloudWatch。
- 根据 Windows 故障转移事件创建筛选模式和亚马逊 CloudWatch 警报。
- 如果发生故障转移/错误事件,请使用 Amazon SNS 发送电子邮件。
先决条件
在开始之前,请完成以下任务:
-
使用可用的 Windows AMI 启动至少两个 Windows 服务器实例。
-
这篇博客文章中使用的示例配置包括: - Windows Server 2019 — 版本 1809 SQL Server 2022 开发者版 —
- (RTM) — 16.0.1000.6
-
亚马逊云科技 Managed 微软 AD PowerShell 5.1.17763.3770 awspowerShell 模
块 —
- 在节点之间配置 Windows 服务器故障转移群集(主动/被动)。
-
安装和配置
亚马逊云科技 命令行接口 (亚马逊云科技 CLI )。 -
创建具有亚马逊 CloudWatch Logs 和 Amazon S NS 权限的 亚马逊云科技 身份和访问管理 (
IAM) 角色 。 - 创建用于警报的 Amazon SNS 主题。
草率排练
步骤 1:在 Windows 实例上安装亚马逊 CloudWatch 代理
第一步是在 Windows 实例上安装亚马逊 CloudWatch 代理。Amazon CloudWatch 代理是一款轻量级数据收集代理,可以从
要
- 使用本地管理员权限登录 Windows 实例。
- 使用以下 PowerShell 脚本从 亚马逊云科技 网站下载亚马逊 CloudWatch 代理安装程序:in -outfile $env: userProfile\ Desktop\ SSMAgent_latest.msi
- 通过运行以下 PowerShell 脚本来安装代理以启动静默安装: top\ SSMAgent_latest.msi /qr
- 在所有 Windows 服务器群集节点上重复步骤 1-3。
步骤 2:在 Windows 实例上配置亚马逊 CloudWatch 代理
安装亚马逊 CloudWatch 代理后,下一步是在 Windows 实例上配置亚马逊 CloudWatch 代理。
要配置亚马逊 CloudWatch 代理,请执行以下步骤:
-
使用@@
- 本地管理员权限登录 Windows 实例。
-
创建 Amazon Cloud Watch 代理配置文件,并在配置 期间指定 系统 、微软-Windows-FailoverClustering/Diagnistics 和 Microsoft-Windows-Failover Clustering/Operation Windows 事件日志名称。 - 你的 C:\Program Files\ Amazon\ AmazonCloudWatchAgent\ config.j
-
AmazoncloudWatchAgent\ amazon-cloudwatch-agent-ctl.ps1"-a fetch-config-m ec2-s-c 文件:config.json 你应该收到与图 2:图 2 中显示的结果相似。
用于启动亚马逊 CloudWatch 代理的 PowerShell 脚本的输出。 -
运行以下 PowerShell 脚本来检查亚马逊 CloudWatch 代理服务状态。
& $env: Programfiles\ Amazon\ AmazoncloudwatchAgent\ amazon-cloudwatch-agent-ctl.ps1-m ec2-a 状态你应该收到与图3:图 3 中显示的结果相似。
用于检查亚马逊 CloudWatch 代理状态的 PowerShell 脚本的输出。 - 在所有群集节点上重复步骤 1-5。
服务启动后,它会将日志传输到亚马逊 CloudWatch Logs。Amazon CloudWatch Logs 可能需要几分钟才能包含初始数据。
要找到新创建的日志组,请导航到集群运行所在区域的 Amazon
图 4。亚马逊 CloudWatch 日志组
Microsoft-Windows-FailoverClustering/Operational 日志组包含一个群集节点的每个实例 ID 的组,如图 5 所示:
图 5。每个亚马逊 EC2 实例 ID 的日志流。
第 3 步:创建筛选模式和亚马逊 CloudWatch 警报
您可以为要监控的特定错误创建过滤器。让我们创建一个过滤器来捕获故障转移事件。故障转移事件将在事件查看器中记录以下事件(FailoverClustering/Operational):
Log Name: Microsoft-Windows-FailoverClustering/OperationalEvent ID: 1641Level: InformationDescription:Clustered role '<role name>' is moving from cluster node '<PreviousNodeName>' to cluster node '<DestinationNodeName>'.
现在,对群集资源执行故障转移测试。来自事件查看器的错误应该出在 Microsoft-Windows-FailoverCluster ing/Operation 日志组中,如图 6 所示:
图 6。对 Windows 故障转移群集资源执行故障转移。
故障转移事件记录在 应用程序和 服务日志/Microsoft/Windows/FailoverClustering/ 操作系统和操作系统下,如图 7 所示:
图 7。显示故障转移操作日志的事件查看器。
-
在 Amazon Cloud
Watch 控制台的日志下,选择 日志组/Microsoft-Windows-FailoverClustering/Operational,选择搜索日志组,如图 8 所
示:
图 8。选择日志组来创建 Amazon CloudWatch 过滤器。 -
搜索
“[1641]”
,即故障转移后在事件查看器中列出的 EventID。控制台列出了匹配的故障转移事件。要创建过滤器,请选择
创建指标筛选器
,如图 9:
图 9 所示。为故障转移事件 ID 创建指标筛选器。 -
在 “
创建指标筛选器
” 下 ,执行以下操作: 在 “
- 筛选器名称 ” 中 ,输入 故障转移。
- 对于 指标命名空间 ,关闭 新 建 并选择 CWAgent。
- 在 指标名称 中,输入 故障转移。
- 对于 指标值 ,输入 1。
- 对于 单位 ,选择 计数。
-
选择 “
创建
” 。
图 10 显示了您的筛选器详细信息:
图 10。指标筛选器详情。
- 返回 CloudWatch/Log Groups/Microsoft-Windows-FailoverClustering/ O 您刚刚创建的过滤器将列在 “ 指标过滤器 ” 下 。
-
创建故障转移过滤器后,我们现在可以创建警报。选择
故障转移
过滤器并选择
创建警报
,如图 11:
图 11 所示。创建亚马逊 CloudWatch 警报。 -
在 “
指定指标和条件
” 页中,执行以下操作:在
- 指标名称 中 ,输入 故障转移 。
- 对于 统计数据 ,选择 最小值 。
-
对于时
段
,选择警报的时间,例如
1 分钟
,如图 12:
图 12 所示。为警报指定指标。 - 在 条件 部分中,对于 阈值类型 ,选择 静态 。
- 对于 “ 无论何时进行故障转移 ” ,选择 更高 > 阈值 。
- 对 于 Th an,输入 0 。
-
选择 “
下一步
” ,如图 13:
图 13 所示。为警报指定条件。 - 在 通知 部分中,对于 警报状态触发器 ,选择 进入警报 。
-
要向
以下 SNS 主题 发送通知
,
- 请 选择:选择现有的 Amazon SNS 主题, 然后选择一个主题;
-
或者选择 “
创建新主题
”,使用您想要接收提醒的电子邮件地址创建 Amazon SNS 主题,如图 14 所示。
选择警报的通知方法。
- 选择 “ 下一步 ” 。
- 在 名称和描述 部分中,输入警报 的 名称 和 描述 。
-
选择 “
下一步
” ,如图 15:
图 15 所示。指定警报名称和描述。 - 在 “ 预览并创建 ” 部分中,查看您的警报配置,然后选择 创建警报 。
完成上述步骤后,您可以测试警报工作流程以确保其按预期运行。要测试工作流程,请在集群上执行故障转移并检查您的电子邮件收件箱。您将收到一封电子邮件,如图 16 中的示例:
图 16。在 WSFC 角色上进行故障转移后的通知电子邮件。
监控其他故障转移群集事件
现在您知道如何创建过滤器和警报,您可以根据需要创建任意数量的过滤器。以下是 Windows 故障转移群集环境中需要监控的建议事件列表:
| Event Viewer | EventID | Level | Message |
| System | 1205 | ERROR | The Cluster service failed to bring clustered role ‘<Role name>’ completely online or offline |
| System | 1069 | ERROR | Cluster resource ‘<Resource name>’ of type ‘<Resource type>’ in clustered role ‘<Role name>’ failed |
| System | 1254 | ERROR | Clustered role ‘<Role name>’ has exceeded its failover threshold. |
| System | 1641 | ERROR | Clustered role ‘<Role name>’ is moving from cluster node ‘<Node name> ‘ to cluster node ‘<Node name> ‘. |
| System | 7034 | ERROR | The SQL Server (MSSQLSERVER) service terminated unexpectedly. |
| System | 1045 | WARNING | No matching network interface found for resource ‘<resource name>’ IP address ‘<IP address>’ |
| Microsoft-Windows-FailoverClustering/Operational | 1204 | INFORMATION | The Cluster service successfully brought the clustered role ‘<Role name’ offline. |
| Microsoft-Windows-FailoverClustering/Operational | 1637 | INFORMATION | Cluster resource ‘<Resource name>’ in clustered role ‘<Role name>’ has transitioned from state online to state ProcessingFailure. |
| Microsoft-Windows-FailoverClustering/Operational | 1674 | INFORMATION | Group ‘<Group name>’ has transitioned from state ‘<Current state>’ to state ‘<New state>’. |
清理
要清除亚马逊 CloudWatch 警报并阻止事件查看器流式传输到亚马逊 CloudWatch,请按照以下步骤操作:
-
停止直播事件查看器(在所有集群节点上重复此过程):
& $env: ProgramFiles\ Amazon\ AmazonCloudwatchAgent\ amazon-cloudwatch-agent-ctl.ps1-m ec2-a 停止 -
卸载亚马逊 CloudWatch 代理(在所有集群节点上重复此过程):
$app = get-WmiObject-Class Win32_Product-Filter “名称 = 'Amazon CloudWatch Agent '” $App.Uninstall ()
-
移除故障转移指标筛选器。你可以使用 亚马逊云科技 管理控制台或以下 PowerShell 脚本移除 Amaon CloudWatch 指标筛选条件:
get-cwlmetricFilter-filternamePrefix “故障转移” | Remove-cwlmetricFilter -
移除日志组流。你可以使用 亚马逊云科技 管理控制台或以下 PowerShell 脚本删除亚马逊 CloudWatch 日志组流
:get-cwllogGroup |?{$_.loggroupName-eq “系统”-或 $_.loggroupName-eq “微软-Windows-FailoverClustering/Operational”} | foreach-Object {$logroupName $logroupName $_logstreamName $_.logstreamName $_. logstreamName}}
-
如果需要,您也可以删除 Amazon CloudWatch 日志组(确保除了本博客中使用的日志以外没有其他日志)。你可以使用 亚马逊云科技 管理控制台或以下 PowerShell 脚本删除亚马逊 CloudWatch 日志组
:get-cwllogGroup |?{$_.loggroupName-eq “系统”-或 $_.loggroupName-eq “微软-Windows-Failoverclustering/Operational”} | Remove-cwllogGroup
结论
在这篇博客文章中,我们提供了有关如何使用亚马逊 CloudWatch 代理捕获 Windows 事件查看器日志、如何基于 EventID 创建指标以及使用 Amazon SNS 发送警报的分步说明。通过自动化、捕获和分析日志,以及在发生关键系统事件时接收近乎实时的警报,您可以节省时间并降低人为错误的风险。
与任何其他云提供商相比,亚马逊云科技 提供的服务和这些服务中的功能要多得多,这使得将现有应用程序迁移到云端并构建几乎可以想象的任何东西变得更快、更容易、更具成本效益。为你的 Microsoft 应用程序提供所需的基础架构,以推动你想要的业务成果。访问我们的.
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。