Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
从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
本博文仅供参考,微软公司对其内容不作任何责任担保或权利赋予。