Freigeben über


了解Windows Server 2008故障转移群集的诊断日志的工作原理

从Windows 2003 Server的服务器群集到Windows Server 2008的故障转移群集,其中一个很大的改变就是群集诊断日志的工作原理变了。简单来说就是,群集日志的记录方式和生成方式不一样了。到底有什么不一样呢?

如何记录群集日志?

在Windows 2003的服务器群集中,每个节点的群集服务会独立维护一个即时的诊断输出日志,存放在%SystemRoot%\Cluster文件夹中,文件名是CLUSTER.LOG。这个群集日志是本地的,并且只记录该节点群集服务的视图和活动。该群集日志是一个基本的文本格式文件,可以很方便的用Word或者Notepad打开。默认情况下,群集日志的最大容量被设置为 8 MB。 当写入的日志信息达到最大容量时,它就截去日志的前面一半,然后后面的一半做为群集日志新的开始。

具体您可以参考以下文章:

How to turn on cluster logging in Microsoft Cluster Server

https://support.microsoft.com/kb/168801

在Windows 2008的故障转移群集中,我们采用ETW (Windows Event Tracing)来记录群集诊断日志。目的是为了与Windows处理其他事件的方式保持一致,例如,系统日志/应用日志等。 因此,这个在Windows 2003中存在的文本格式的群集日志在Windows Server 2008中也就不存在了。在这种新的工作机制下,我们常常会发现这样的现象:打开群集日志,9月1号的群集日志有的,9月3号的群集日志也有的,但是这中间的9月2号的日志就找不到了,为什么不连续呢?

说到这,就让我们来具体聊聊群集服务是如何采用ETW方式来记录群集诊断日志记录方式的。

打开Performance Monitor->Data Collector Sets->Event Trace Sessions,你会看到FailoverClustering的 ETW trace session。这个trace在我们第一次配置群集并启动群集服务时就已经启动了。日志文件存放在%WinDir%\System32\winevt\logs\,文件的格式是*.etl。默认情况下,系统只保留前面三个etl文件,每个etl的文件大小是100M。每一时刻,只有一个etl文件是活动的,真正用来循环记录群集日志,一般是*.etl.001。这个00X的前缀是每次服务器重新启动的时候在前一个etl文件名后加上的。

在Windows Server 2008中的格式:

ClusterLog.etl.001

ClusterLog.etl.002

ClusterLog.etl.003

在Windows Server 2008 R2中的格式:

Microsoft-Windows-FailoverClustering Diagnostic.etl.001

Microsoft-Windows-FailoverClustering Diagnostic.etl.002

Microsoft-Windows-FailoverClustering Diagnostic.etl.003

假如我们每天12AM重新启动服务器,理想情况下,这三个ETL的文件应该是这样的:

但是由于每个ETL文件的大小是100M,假设我们在1月3日3PM达到了100M这个最大值并且12AM到3AM的日志被截掉了,那么ETL.001这个文件就如下所示:

这时,如果我们去采集群集日志,群集会把所有的ETL.00X 文件,如ETL.003, ETL.002, ETL.001,按照他们生成的顺序合并在一起,生成一个可读的文本文件。此时,您就明白了为什么群集日志是不连续的,具体如下图所示:

 

为了避免这样的问题发生,我们可以增大群集日志的大小,最大值是1024M。

如何生成群集日志?

我们可以通过运行以下命令来生成这些ETL文件的一个文本格式并且可读的文件。关于ETL文件,我后面会再详细的解释。

如果是Windows Server 2008,我们可以用命令行“cluster.exe”。如果是Windows Server 2008 R2,我们还可以使用群集的PowerShell命令。

Command Line:

C:\>cluster log /gen

关于这个命令“cluster log /gen”的其他详细用法,您可以查看帮助说明,“cluster log /?”

Powershell

C:\PS> Get-ClusterLog

关于这个命令“Get-ClusterLog”的其他详细用法,您可以查看以下文章:

Get-ClusterLog

https://technet.microsoft.com/en-us/library/ee461045.aspx

 

本博文仅供参考,微软公司对其内容不作任何责任担保或权利赋予。