【解析向】腾讯云的Windows Server日志配置收集工具是个什么鬼?(4)

在Windows Server日志配置收集工具的场景2里,有几个模块特别显眼,那就是带着Hard开头的:

GetHardDiskStatus
GetHardCPUStatus
GetHardMenStatus
GetHardBiosStatus
GetHRaid

笔者浏览了一下,忽然明白了,这些参数是针对硬件的,但是这不是针对IaaS层CVM的日志配置收集工具吗?为什么还有硬件的信息收集?难道腾讯云已经突破天际,可以实现软件隔离的情况下把硬件直通,所以才需要硬件日志收集?

接着,我看了下这几个模块的判断分支逻辑输出是:

Write-Progress -Activity "小Q:正在检查是否存在黑石特性并收集信息..."

黑石?原来是黑石,黑石是腾讯云业界首创的IaaS一种特殊形式:

通过技术手段将安全可靠的底层硬件暴露给客户,倒是蛮符合腾讯一贯的赋能作风。

但是一旦硬件开放出来,那就有可能出现问题,而在Windows Server是否有方法收集硬件呢?在传统行业中,要监控硬件或者获取硬件状态,一般需要根据服务器硬件厂商(OEM/ODM)来进行按照对应厂商提供的SA(Server Admin)管理套件进行底层串口获取,但是在互联网行业又是怎么做的呢?

通过解析工具,我们可以看到实现的方式是:

#收集硬件硬盘状态
function GetHardDiskStatus
{
 "hdiskinfo ===<" | Out-File -Append ".\$Dirfilename\hardware.txt"
 "——————————$date : 物理硬盘状态 如下————————————
 " | Out-File -Append ".\$Dirfilename\$Logfilename"
 $getHardDiskStatus = wmic diskdrive | Out-File -Append ".\$Dirfilename\$Logfilename"
 ">===" | Out-File -Append ".\$Dirfilename\hardware.txt"
}
#收集硬件CPU状态
function GetHardCPUStatus
{
 "hcpuinfo ===<" | Out-File -Append ".\$Dirfilename\hardware.txt"
 "——————————$date : 物理CPU状态 如下————————————
 " | Out-File -Append ".\$Dirfilename\hardware.txt"
 $getCPUStatus = wmic cpu | Out-File -Append ".\$Dirfilename\hardware.txt"
 ">===" | Out-File -Append ".\$Dirfilename\hardware.txt"
}
#收集硬件内存状态
function GetHardMenStatus
{
 "hmeninfo ===<" | Out-File -Append ".\$Dirfilename\hardware.txt"
 "——————————$date : 物理内存状态 如下————————————
 " | Out-File -Append ".\$Dirfilename\hardware.txt"
 $getHardMenStatus = wmic memorychip | Out-File -Append ".\$Dirfilename\hardware.txt"
 ">===" | Out-File -Append ".\$Dirfilename\hardware.txt"
}
#收集硬件主板状态
function GetHardBiosStatus
{
 "hbiosinfo ===<" | Out-File -Append ".\$Dirfilename\hardware.txt"
 "——————————$date : 物理主板状态 如下————————————
 " | Out-File -Append ".\$Dirfilename\hardware.txt"
 $getHardBoisStatus = wmic bios | Out-File -Append ".\$Dirfilename\hardware.txt"
 ">===" | Out-File -Append ".\$Dirfilename\;"
}

通过wmic接口进行获取,wmic全称The WMI command-line,WMI接口命令行,WMI的作用在前几篇都介绍过,在这里补充一点,WMI也可以通过系统接口获取有限的硬件状态,但是这是从带内接口进行获取,所以工具这里使用WMI接口获取其实不是特别严谨,在不加额外工具的情况下,较可信的获取方式应该是通过SNMP透传过来(带内手段中)。

对于这种级别的收集,建议只关注Status即可(不过一般带内看如果是Warning就已经很严重了,Error状态基本不可能看到,因为Error状态基本系统也就无法进入了)

在不加载其他的硬件旁路驱动的情况下,腾讯云对于这块收集已经算尽心尽力了,然而,在Raid卡这块的监控明显看到了与四大件不一样的地方:

通过WMI输出Raid卡类型:

 #判断Raid卡类型
 $RaidType = Get-WmiObject -Class Win32_SCSIController | where Name -NE "Microsoft Storage Spaces Controller"

从下面的分支可以看到至少支持Avag/LSI/IBM/PERC/Smart等Raid命令行信息:

 if ($RaidType.Name -like "*Avag*")
 {
  "HRaidinfo ===<" | Out-File -Append $logpath
  C:\WindowsRaidCard\sas3ircu list | Out-File -Append $logpath
  C:\WindowsRaidCard\sas3ircu 0 display | Out-File -Append $logpath
  ">===" | Out-File -Append $logpath
 }
 if ($RaidType.Name -like "*LSI MegaRAID*") {
  "HRaidinfo ===<" | Out-File -Append $logpath
  "FwLog<" | Out-File -Append $logpath
  C:\WindowsRaidCard\MegaCli64 -FwTermLog dsply -a0 >> $logpath
  ">" | Out-File -Append $logpath
  "PdInfo<" | Out-File -Append $logpath
  C:\WindowsRaidCard\MegaCli64 -LdPdinfo -Aall -nolog | Out-File -Append $logpath
  ">" | Out-File -Append $logpath
  ">===" | Out-File -Append $logpath
 }
 if ($RaidType.Name -like "*IBM*")
 {
  "HRaidinfo ===<" | Out-File -Append $logpath
  "FwLog<" | Out-File -Append $logpath
  C:\WindowsRaidCard\MegaCli64 -FwTermLog dsply -a0 >> $logpath
  ">" | Out-File -Append $logpath
  "PdInfo<" | Out-File -Append $logpath
  C:\WindowsRaidCard\MegaCli64 -LdPdinfo -Aall -nolog | Out-File -Append $logpath
  ">" | Out-File -Append $logpath
  ">===" | Out-File -Append $logpath
 }
 if ($RaidType.Name -like "*PERC")
 {
  "HRaidinfo ===<" | Out-File -Append $logpath
  C:\WindowsRaidCard\perccli64 /c0 show all >> $logpath
  ">===" | Out-File -Append $logpath
 }
 if ($RaidType.Name -like "*Smart Array*")
 {
  "HRaidinfo ===<" | Out-File -Append $logpath
  "此黑石服务器无免装命令行工具,请在带外检查Raid卡"
  ">===" | Out-File -Append $logpath
 }
 if ($RaidType.Name -like "*NVM*")
 {
  "HRaidinfo ===<" | Out-File -Append $logpath
  "此黑石服务器为NVMeSSD机型,无免装命令行工具,请直接检查硬盘状态即可"
  ">===" | Out-File -Append $logpath
 }
 ">===" | Out-File -Append ".\$Dirfilename\hardware.txt"
} 

其中MegaCli工具不单单在Windows中可以使用,也有Linux版本,所以在Raid卡这里采用这个工具会比较通用,在Windows Server特别是使用了虚拟化技术的Windows Server,对IO会非常敏感,很多业务连接异常都来源IO异常(时延/抖动/带宽),而Raid卡异常在常规系统日志里也只会体现为Warning的“IO重置”。

然而,这些都是系统非自带的命令行工具,日志配置工具是如何解决这个问题的?

$client = new-object System.Net.WebClient
$client.DownloadFile('http://mirrors.tencentyun.com/install/platform_ops/bm/WindowsRaidCard.zip', 'C:\WindowsRaidCard.zip')
if (Test-Path C:\WindowsRaidCard) { }else
 { New-Item -Path C:\WindowsRaidCard -Type Directory }
 Unzip-File -ZipFile C:\WindowsRaidCard.zip -TargetFolder C:\WindowsRaidCard
 Write-Progress -Activity "小Q:正在收集Raid卡硬件信息" -status "$Pi %已完成" -PercentComplete $Pi;

似乎是自己收集了一个对应的工具包,然后通过WebClient进行下载。

至此,也可以看到腾讯云Windows Server 日志配置收集工具在硬件收集上的用心,建议有硬件服务器运维需求的读者,可以参照着用,对于Windows Server,硬件方面的排错建议结合性能/日志一起看,常规硬件状态与对应时间点的Raid卡日志将是硬件故障排错的关键。

在下一篇,将对剩余的7个模块进行介绍,目前到现在这个系列已经发布了4篇,借助腾讯云Windows Server日志配置收集工具加上这五篇的解读可以说覆盖了Windows Server日常70%的运维视角,当然,更多运维经验应该是在一次次的实战中去积累。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程

C语言怎么学习?以C语言模拟登录为例,学C语言该当如此方可成

好了不用看了,看直了也不会有妹子,看题了: C语言编写代码实现,模拟用户登录------看着是不是很简单?,是不是很轻松?,是不是就有这样的代码? (小编随便百...

3999
来自专栏编程一生

漫画:全面理解java.lang.IllegalArgumentException及其可用性设计

1602
来自专栏老九学堂

【编程解惑】Java、JavaEE、JavaSE、Java Web、JavaScript有什么区别?

很多有想入门Java的小伙伴在听到Java那么多叫法的时候,是不是表示一脸懵逼,今天老九君就给大家捋一捋Java大家族间的分门别类。 ? Java分为:Jav...

4079
来自专栏非典型技术宅

iOS传感器:App前后台切换后,获取敏感信息使用touch ID进行校验1. 指纹识别传感器的用法介绍2. Touch ID指纹识别的代码实现3. 判断系统版本号的几种方法4. App从后台到前台,

1877
来自专栏Android 技术栈

Macbook Pro键帽拆解安装图文教程

前段时间把可乐洒在电脑上了,大概有1/5的罐装可乐,紧急之下把电脑翻转过来,万幸的是电脑没出问题。就是过了两天之后,键盘黏黏的,特别是空格键。 送修的话,这属...

6.6K1
来自专栏mwangblog

git,版本控制界的魔术师(1/18/2018)

1042
来自专栏日常学python

用Python代码来下载任意指定网易云歌曲

前两天教了大家如何在控制台上找到真实的mp3播放地址,但是不可以下载付费的,因为只能下载可播放的歌曲。至于怎样下载付费网易云音乐,还是开个会员吧,要知道免费是最...

1131
来自专栏进击的程序猿

通过Eloquent实现Repository模式

Eloquent采用了ActiveRecord的模式,这也让Eloquent招致了好多批评,让我们去看现在Eloquent/Model.php文件, 该文件已经...

963
来自专栏哲学驱动设计

OEA 扩展属性系统 - 主要设计类图

时间有限,简单快速的完成本篇博客……(很多问题在此就不细说清楚了,主要还是记录一下成果。) * 先是整个子系统要完成的需求列表: ? * 然后是对它的分析,以及...

2716
来自专栏纯洁的微笑

小明历险记:规则引擎Drools教程一

1453

扫码关注云+社区

领取腾讯云代金券