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

相关文章

来自专栏维恩的派VNPIE

如何根据账户资金比例下单?

目前vn.py所提供的示例代码都是按照固定数量下单,本文将介绍‘如何根据账户资金情况计算交易数量进而下单’。感谢‘爱茶语’以及‘王玥’在「维恩的派」论坛内的分享...

912
来自专栏BIT泽清

贷款应用被拒如何应对?怎么上架(含隐藏开关)的马甲包

      突然间的2.1大礼包成了一个重灾区,苹果加大了中国区的审核力度。但其实归根结底,会触犯到这个大礼包的App很大部分或者说几乎都是和这个关键词挂钩的 ...

27110
来自专栏FreeBuf

黑了记者:写个恶意软件玩玩(二)

该篇是3篇系列中的第2篇(可在此读第1篇 http://www.freebuf.com/articles/others-articles/34277.html)...

1829
来自专栏Angular&服务

关于做angular4引入echarts图表

NgxEchartsService 是全局 echarts 对象的包装器。您可以直接获取本机echarts对象或使用包装器方法。例如:

1943
来自专栏点滴积累

微信小程序项目踩过的几个坑

一、前言 近期,开始了一段辛酸的还未开始就已经结束的“创业”(参见我的第二次创业,以梦为马,莫负韶华)。大体上是开发了一款微信小程序,关于创业这件事情就不细说了...

4095
来自专栏FreeBuf

五大安全研究者必用的搜索引擎

CNN 曾在 2013 年 4 月 8 日 的新闻报道中称 Shodan 是“互联网上最可怕的搜索引擎”。 甚至光是听它的名字,就让人觉得不寒而栗! 那只是三年...

1987
来自专栏ATYUN订阅号

腾讯开源围棋AI程序PhoenixGo,复现AlphaGo Zero

PhoenixGo是一个围棋AI程序,它执行AlphaGo Zero论文“掌握无人知识的Go游戏”。它也被称为FoxGo中的“BensonDarr”,CGOS中...

1122
来自专栏阮一峰的网络日志

双因素认证(2FA)教程

所谓认证(authentication)就是确认用户的身份,是网站登录必不可少的步骤。 密码是最常见的认证方法,但是不安全,容易泄露和冒充。 ? 越来越多的地方...

42410
来自专栏腾讯大讲堂的专栏

Android开发在路上:少去踩坑,多走捷径

最近一朋友提了几个Android问题让我帮忙写个小分享,我觉得对新人还是挺有帮助的,所以有了这个小分享。 1.目前, Android APP开发完成后,通常需要...

20010
来自专栏玩转JavaEE

一个开源的五子棋大战送给各位小伙伴!

有暇,做了个五子棋大战的小游戏送给各位小伙伴! 用到的知识点有: 1.JavaWeb基础知识(懂jsp,servlet足够) 2.JavaScript和jQue...

3355

扫码关注云+社区