都要采集什么
采集内容 | 举例 | 用途 |
---|---|---|
时序数据 metrics | 如传感器温度度数、风扇转速 | 可以根据所有机器电流得出机房电流等 |
事件日志 sel | 如内存可纠正错误Mem ECC Warning | 告警触发换配件工单等 |
硬件资产信息 info | 如获取机器上有多少块硬盘,插槽信息等 | 可以做资产盘点 |
硬件信息info意义说明
能采集到多细的粒度
固件版本
厂商
产品编号
插槽
....
利用详细的信息可以
- 一般公司资产盘点系统都会对接供应链等系统
- 避免不了从A机器拆下一块硬盘插到B上面
- 这时候就需要探针定时采集真实的资产数据来矫正资产系统中的数据了
- 而这个
探针
其实可以用ipmi
采集实现 - 以
Lenovo x3550 M5
机型为例,ssh
后使用storage -show disk[4-0]
可以查看单块磁盘的info信息
system> storage -list drives
disk[4-0] Drive 0
disk[4-1] Drive 1
disk[4-2] Drive 2
disk[4-3] Drive 3
system> storage -show disk[4-0]
Product Name: xxx
State: Unconfigured Good
Slot No.: 0
Interface Type: SAS
Media Type: HDD
Health Status: Normal
Capacity: 558.912GB
Speed: 6.0Gb/s
Current Temperature: 29C
Rotation Rate: 10500RPM
Media Error Count: 0
Other Error Count: 0
Predication Fail Count: 0
Remaining Life: N/A
Manufacture: LENOVO-X
Device ID: 3
Enclosure ID: 0x00FC
Machine Type:
Model:
Serial No.: xxxx
Total Firmware number: 1
Name: Drive
Description:
Manufacture:
Version: L56R
Release Date:
采集工具
底层工具实例(ipmi vs redfish)
redfish
- IPMI也在2015年公布2.0 v1.1标准后,不再更新,被RedFish永久代替,Intel也宣布不再维护,号召大家转战RedFish
- ipmi有安全问题
- redfish使用https、json、restfulapi
- 但是。。。好像没推开,大部分公司还在用ipmi,多尴尬
ipmi
使用Remote Management Control Protocol 协议获取远端信息
- 举例prometheus ipmi_exporter
- 使用freeipmi提供的工具集
- ipmimonitoring/ipmi-sensors : 读取IPMI传感器读数和传感器数据存储库(SDR)信息的工具
ipmi 工具对比
单机状态汇总
设备整体状态: 各个模块分`正常`和`紧急`两种状态
- 电源:
- 风扇:
- 内存:
- 网卡:
- 物理磁盘:
- 处理器:
- 以
Lenovo x3550 M5
为例 登录机器的控制卡web可以看到首页就展示了汇总状态 ssh到目标管理卡,执行
syshealth summary
即可得到跟控制卡web展示一样的汇总system> syshealth summary Power On State OS booted Restarts 635 Component Type Status ================================== Cooling Devices Normal Power Modules Critical Local Storage Normal Processors Normal Memory Normal System Normal
但是并不是所有厂商都直接支持ssh获取汇总信息
- 以
Dell PowerEdge R730
为例 ,需要额外安装 专用工具idracadm
idracadm -r xx.xxx.xxx.xx -u ADMIN -p ADMIN hwinventory
- 其中
RollupStatus
指标代表就是子模块的汇总信息
-------------------------------------------------------------------
[InstanceID: System.Embedded.1]
Device Type = System
LastUpdateTime = 2018-09-13T13:16:48
LastSystemInventoryTime = 2020-12-14T07:48:03
EstimatedExhaustTemperature = 35 Degree C
EstimatedSystemAirflow = 36 CFM
LicensingRollupStatus = OK
StorageRollupStatus = OK
RollupStatus = Error
MemoryRollupStatus = OK
TempStatisticsRollupStatus = OK
CurrentRollupStatus = OK
BatteryRollupStatus = OK
FanRollupStatus = OK
IntrusionRollupStatus = OK
VoltRollupStatus = OK
TempRollupStatus = OK
PSRollupStatus = Error
CPURollupStatus = OK
PopulatedPCIeSlots = 1
MaxPCIeSlots = 7
PopulatedCPUSockets = 2
MaxCPUSockets = 2
PowerCap = 0 Watts
PowerCapEnabledState = Disabled
PowerState = On
BaseBoardChassisSlot = NA
PopulatedDIMMSlots = 8
SysMemPrimaryStatus = OK
.....
-------------------------------------------------------------------
硬件采集器整体流程说明
架构图
用户通过前端配置采集目标,配置下面几个信息
- 管理卡地址 - 用户名、密码 - 采集模式`ipmi` or `redfish`
- 采集目标通过
控制器
写入db中,控制器
从db中取出存活采集器
分发采集目标 - 用户通过前端配置
告警订阅规则
,配置下面几个信息 - 告警分组模式(分组见下表),同时支持默认分组(可选): 代表所有告警都会给默认分组发一份
- 分组告警接收人
user_name
列表 - 分组告警回调地址
webhook
列表 分组告警接收人接收通道
im/mail/voice/sms
分组模式 | 举例 | key名称 |
---|---|---|
按业务标签分组 | 如订阅business=live的硬件故障 | business |
按厂商分组 | 如订阅company=dell的硬件故障 | company |
按型号分组 | 如订阅model=PowerEdge R730的硬件故障 | model |
按机房分组 | 如订阅推荐region=北京的硬件故障 | region |
按故障模块类型分组 | 如订阅subsystem=memory的硬件故障 | subsystem |
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。