【解析向】腾讯云的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 条评论
登录 后参与评论

相关文章

来自专栏腾讯云API

【视频】腾讯云API使用指南

云API团队在云学院上线了一套视频教程,目的是和大家分享如何进行API、SDK和CLI的使用。

4499
来自专栏tkokof 的技术,小趣及杂念

小话游戏脚本(一)

( 题记:近来在网上学习到一个新的观点(应该是来自刘未鹏的BLOG :) ):书写是为了更好的学习,这与之前脑子里传道授业解惑的观点颇为迥异,品一品又颇以为然...

831
来自专栏日常学python

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

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

931
来自专栏极客生活

真正好用的python库

这个库是我安装完python环境后第一个安装的库,装上这个库再开始写代码才有底气,作者 Kenneth Reitz 是公认python领域代码写的最好的两个人之...

983
来自专栏编程

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

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

3139
来自专栏纯洁的微笑

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

1023
来自专栏进击的程序猿

通过Eloquent实现Repository模式

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

863
来自专栏Linyb极客之路

规则引擎之drools入门

现实生活中,规则无处不在。对于某些企业级应用,诸如欺诈检测软件,购物车,活动监视器,信用和保密应用之类的系统,经常会有大量的、错综复杂的业务规则配置,而...

3843
来自专栏NetCore

更新自己,不要影响其他人

最近围绕着c++和C#的讨论越来越激烈,firelong努力着证明自己的观点,园子里一些大大们也在激烈的辩证着,作为小鸟的我,旁观,看看一笑而过吧。 其实无论哪...

20910
来自专栏Android 开发者

开发者也是用户 - 第二部分:改善 UI 和 API 可用性的五条指导原则

1723

扫码关注云+社区