文章目录

Toggle

- oid及mibs
- Kubernetes
- 使用Sealos 命令行工具快速构建Kubernetes
- Prometheus
- Categraf
- Grafana
- Kubernetes v1.29.9安装Grafana 12并开启匿名访问

之前网站博客数据已经迁移到本地,由于原Dell塔式服务器因电源故障维修,所以新购一台Dell R730将博客数据迁移到新服务器上,目前存在的问题是Dell R730运行Esxi,现在对于物理机的CPU温度无法进行实时监控,Idrac也不是经常登录,所以需要对CPU温度等硬件信息进行监控

> 本次监控方案采用夜莺开源categraf + Prometheus + Grafana实现
> 所有yaml文件均可以直接下载https://d.frps.cn/file/kubernetes/image/snmp_dell_r730.tar.gz

我们登录到IDRAC上,开启SNMP代理 (默认情况下是开启的)
1751987895735.png

首先我们找台虚拟机获取snmp命令

yum install -y net-snmp net-snmp-utils


安装完毕后,我们使用snmpwalk检测服务器SNMP数据是否正常获取到

> 正常情况下会输出很多日志信息

[root@ops ~]# snmpwalk -v 2c -c public 192.168.21.100|head
SNMPv2-MIB::sysDescr.0 = STRING: 
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.674.10892.5
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (44308898) 5 days, 3:04:48.98
SNMPv2-MIB::sysContact.0 = STRING: \"support@dell.com\"
SNMPv2-MIB::sysName.0 = STRING: idrac-8B9QHG2
SNMPv2-MIB::sysLocation.0 = STRING: \"unknown\"
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (30) 0:00:00.30
SNMPv2-MIB::sysORID.1 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.2 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.3 = OID: IP-MIB::ip


 

oid及mibs


> 已在 Dell Poweredge R740xd、R740、R730、R720xd、R530、R620、R630、T630 等等服务器上的 iDRAC 7、iDRAC 8、iDRAC 9 上进行了测试,理论上支持所有类型。

这里的oid和mibs我直接使用作者提供的,其它型号需要自行去官网下载

其它型号mibs配置需要看作者整理的https://github.com/robotneo/phymonarch/tree/main/snmp/categraf

 

Kubernetes


k8s使用kubesphere纳管部署,版本为1.29.9





https://i4t.com/25651.htmljavascript:void(0))

使用Sealos 命令行工具快速构建Kubernetes


新闻联播老司机

- 25年7月2日
- 喜欢:0
- 浏览:511

1752063948939.png

Prometheus


 

Prometheus需要开启--web.enable-remote-write-receiver参数,允许categraf远程写入

这里不过多介绍安装,也可以使用VM,我这没有环境就使用Prometheus

1752061276497.png

Categraf


categraf实际上就是telegraf/snmp插件实现,和telegraf配置方法大同小异

懒人包https://d.frps.cn/file/kubernetes/image/snmp_dell_r730.tar.gz

首先创建ConfigMap配置文件,命名空间我这里使用tools,我这里数据是写到Prometheus,也可以自行修改为VM

- url = "http://prometheus:9090/api/v1/write" #写到VM需要更换接口地址
- 我这里Prometheus和categraf在一个namespace下,这里我直接写svc名称

为config.toml创建configmap配置文件

apiVersion: v1
kind: ConfigMap
metadata:
  name: categraf-config
  namespace: tools
data:
  config.toml: |  # 主配置文件
    [global]
    print_configs = false
    hostname = "ops"
    omit_hostname = false
    interval = 15
    providers = ["local"]
    concurrency = -1
    [global.labels]

    [log]
    file_name = "stdout"

    max_size = 100
    max_age = 1
    max_backups = 1
    local_time = true
    compress = false

    [writer_opt]
    batch = 1000
    chan_size = 1000000

    [[writers]]
    url = "http://prometheus:9090/api/v1/write"
    basic_auth_user = ""
    basic_auth_pass = ""

    timeout = 5000
    dial_timeout = 2500
    max_idle_conns_per_host = 100

    [http]
    enable = false
    address = ":9100"
    print_access = false
    run_mode = "release"
    ignore_hostname = false
    agent_host_tag = ""
    ignore_global_labels = false

    [ibex]
    enable = false
    interval = "1000ms"
    servers = ["127.0.0.1:20090"]
    meta_dir = "./meta"

    [heartbeat]
    enable = false
    url = "http://127.0.0.1:17000/v1/n9e/heartbeat"
    interval = 10
    basic_auth_user = ""
    basic_auth_pass = ""
    timeout = 5000
    dial_timeout = 2500
    max_idle_conns_per_host = 100

    [prometheus]
    enable = false
    scrape_config_file = "/path/to/in_cluster_scrape.yaml"
    log_level = "info"


接下来为input.snmp插件创建配置文件

> 这里配置有点多,可以下载我配置好的
> 懒人包https://d.frps.cn/file/kubernetes/image/snmp_dell_r730.tar.gz

- udp://192.168.21.100:161 #自行修改为IDRAC IP
- path = ["/data/mibs/dell"] #把戴尔的 mib 文件放入 /data/mibs/dell 目录中

其它不用修改

apiVersion: v1
kind: ConfigMap
metadata:
  name: categraf-config-input
  namespace: tools
data:
  snmp.toml: |  # 采集配置
    interval = 30

    [[instances]]
    agents = [
      #"udp://iDRACURL1:161",
      #  "udp://iDRACURL2:161",
        "udp://192.168.21.100:161"
    ]

    # metrics_name_prefix = "dell_"

    interval_times = 1
    # 标签可自定义标签值
    labels = { region = "abcdocker", role = "idrac", brand = "dell" }

    # 每个agent请求的超时时间
    timeout = "5s"
    # SNMP Agent的版本
    version = 2
    # SNMP团体名
    community = "public"
    # 把戴尔的 mib 文件放入 /data/mibs/dell 目录中
    path = ["/data/mibs/dell"]
    translator = "gosmi"
    # 代理主机标签
    agent_host_tag = "device_ip"
    # 每个agent重试次数
    retries = 3
    max_repetitions = 15

    # iDRAC版本 racShortName
    [[instances.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.1.1.2.0"
    name = "dell_idrac_shortname"
    is_tag = true

    # iDRAC固件版本 racFirmwareVersion
    [[instances.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.1.1.5.0"
    name = "dell_idrac_firmware"
    is_tag = true

    # iDRAC界面的URL
    [[instances.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.1.1.6.0"
    name = "dell_idrac_url"
    is_tag = true

    # # 设备名称 iDRAC-系统服务标签
    # [[instances.field]]
    # oid = ".1.3.6.1.2.1.1.5.0"
    # name = "system_name"
    # is_tag = true

    # 服务标签
    [[instances.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.1.3.2.0"
    name = "dell_service_tag"
    is_tag = true

    # 快速服务代码
    [[instances.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.1.3.3.0"
    name = "dell_express_service_code"
    is_tag = true

    # 操作系统名称
    [[instances.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.1.3.6.0"
    name = "dell_os_name"
    is_tag = true

    # 型号名称
    [[instances.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.1.3.12.0"
    name = "dell_model_name"
    is_tag = true

    # 操作系统版本
    [[instances.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.1.3.14.0"
    name = "dell_os_version"
    is_tag = true

    # 系统的唯一标识符或ID
    [[instances.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.1.3.13.0"
    name = "dell_system_id"

    # 设备全局系统状态 globalSystemStatus
    # ObjectStatusEnum (INTEGER) 
    # {other(1), unknown(2), ok(3), nonCritical(4), critical(5), nonRecoverable(6) }
    [[instances.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.2.1.0"
    name = "dell_glob_system_status"

    # 设备LCD状态 systemLCDStatus
    # ObjectStatusEnum (INTEGER) 
    # {other(1), unknown(2), ok(3), nonCritical(4), critical(5), nonRecoverable(6) }
    [[instances.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.2.2.0"
    name = "dell_system_lcd_status"

    # 设备全局存储状态 globalStorageStatus
    # ObjectStatusEnum (INTEGER) 
    # {other(1), unknown(2), ok(3), nonCritical(4), critical(5), nonRecoverable(6) }
    [[instances.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.2.3.0"
    name = "dell_global_storage_status"

    # 设备系统电源状态 systemPowerState
    # PowerStateStatusEnum (INTEGER) 
    # {other(1), unknown(2), off(3), on(4) }
    [[instances.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.2.4.0"
    name = "dell_system_power_state"

    # 设备系统电源在线时长 systemPowerUpTime 单位秒
    # Unsigned32BitRange (INTEGER) 
    # (0..2147483647)
    [[instances.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.2.5.0"
    name = "dell_system_power_uptime"

    # 事件日志中的条目数 numEventLogEntries
    #  Unsigned32BitRange (INTEGER) 
    # (0..2147483647) 
    [[instances.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.300.1.0"
    name = "dell_num_event_log"

    # BIOS状态 systemBIOSTableEntry
    [[instances.table]]
    name = "dell"
    # systemBIOSchassisIndex, systemBIOSIndex
    index_as_tag = true
    inherit_tags = ["dell_idrac_shortname", "dell_service_tag"]

    # BIOS版本信息 systemBIOSVersionName
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.300.50.1.8"
    name = "bios_version"
    is_tag = true

    # BIOS状态设置 systemBIOSStateSettings
    #  StateSettingsFlags (INTEGER) 
    # {unknown(1), enabled(2), notReady(4), enabledAndNotReady(6)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.300.50.1.4"
    name = "bios_state"
    is_tag = true

    # BIOS状态 systemBIOSStatus
    # ObjectStatusEnum (INTEGER) 
    # {other(1), unknown(2), ok(3), nonCritical(4), critical(5), nonRecoverable(6) }
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.300.50.1.5"
    name = "bios_status"

    # 固件表 firmwareTableEntry
    [[instances.table]]
    name = "dell"
    # firmwarechassisIndex, firmwareIndex
    index_as_tag = true
    inherit_tags = ["dell_idrac_shortname", "dell_service_tag"]

    # 固件状态设置 firmwareStateSettings
    # StateSettingsFlags (INTEGER) 
    # {unknown(1), enabled(2), notReady(4), enabledAndNotReady(6)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.300.60.1.4"
    name = "firmware_state"
    is_tag = true

    # 固件状态 firmwareStatus
    # ObjectStatusEnum (INTEGER) 
    # {other(1), unknown(2), ok(3), nonCritical(4), critical(5), nonRecoverable(6) }
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.300.60.1.5"
    name = "firmware_status"

    # 固件类型名称 firmwareTypeName
    # String64 (OCTET STRING) (SIZE (0..64))
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.300.60.1.8"
    name = "firmware_type_name"
    is_tag = true

    # 固件版本 firmwareVersionName
    # String64 (OCTET STRING) (SIZE (0..64))
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.300.60.1.11"
    name = "firmware_version_name"
    is_tag = true

    # 侵入表条目 intrusionTableEntry
    [[instances.table]]
    name = "dell"
    # powerSupplychassisIndex, powerSupplyIndex
    index_as_tag = true
    inherit_tags = ["dell_idrac_shortname", "dell_service_tag"]

    # 侵入设备状态设置 intrusionStateSettings
    # StateSettingsFlags (INTEGER) 
    # {unknown(1), enabled(2), notReady(4), enabledAndNotReady(6)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.300.70.1.4"
    name = "intrusion_state"
    is_tag = true

    # 侵入设备状态 intrusionStatus
    # ObjectStatusEnum (INTEGER) 
    # {other(1), unknown(2), ok(3), nonCritical(4), critical(5), nonRecoverable(6) }
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.300.70.1.5"
    name = "intrusion_status"

    # 入侵位置名称 intrusionLocationName
    # String64 (OCTET STRING) (SIZE (0..64))
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.300.70.1.8"
    name = "intrusion_location_name"
    is_tag = true

    # 电源供应表条目 powerSupplyTableEntry
    [[instances.table]]
    name = "dell"
    # intrusionchassisIndex, intrusionIndex
    index_as_tag = true
    inherit_tags = ["dell_idrac_shortname", "dell_service_tag"]

    # 电源实体状态设置 powerSupplyStateSettingsUnique
    # PowerSupplyStateSettingsUniqueFlags (INTEGER) {unknown(1), onLine(2), notReady(4), fanFailure(8), onlineAndFanFailure(10),
    # powerSupplyIsON(16), powerSupplyIsOK(32), acSwitchIsON(64), onlineandAcSwitchIsON(66),
    # acPowerIsON(128), onlineAndAcPowerIsON(130),
    # onlineAndPredictiveFailure(210),
    # acPowerAndSwitchAreOnPowerSupplyIsOnIsOkAndOnline(242)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.600.12.1.4"
    name = "power_state"
    is_tag = true

    # 电源实体状态 powerSupplyStatus
    # ObjectStatusEnum (INTEGER) 
    # {other(1), unknown(2), ok(3), nonCritical(4), critical(5), nonRecoverable(6) }
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.600.12.1.5"
    name = "power_status"

    # 电源实体最大持续输出功率 powerSupplyOutputWatts 以十分之一瓦特为单位
    # Signed32BitRange (INTEGER) (-2147483647.2147483647)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.600.12.1.6"
    name = "power_output_watts"
    is_tag = true

    # 电源实体额定输入功率 powerSupplyRatedInputWattage 以十分之一瓦特为单位
    # Signed32BitRange (INTEGER) (-2147483647.2147483647)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.600.12.1.14"
    name = "power_input_watts"
    is_tag = true

    # 电源实体名称 powerSupplyLocationName
    # String64 (OCTET STRING) (SIZE (0..64))
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.600.12.1.8"
    name = "power_location_name"
    is_tag = true

    # 电源实体完全合格设备描述符 powerSupplyFQDD
    # String64 (OCTET STRING) (SIZE (0..512))
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.600.12.1.15"
    name = "power_fqdd"
    is_tag = true

    # 电源实体最大输入电压 powerSupplyMaximumInputVoltage 以伏特为单位
    # Signed32BitRange (INTEGER) (-2147483647.2147483647)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.600.12.1.9"
    name = "power_max_inputvlo"

    # 电源实体当前输入电压 powerSupplyCurrentInputVoltage 以伏特为单位
    # Signed32BitRange (INTEGER) (-2147483647.2147483647)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.600.12.1.16"
    name = "power_current_inputvlo"

    # 电流探头条目表 amperageProbeTableEntry
    [[instances.table]]
    name = "dell"
    # amperageProbechassisIndex, amperageProbeIndex
    index_as_tag = true
    inherit_tags = ["dell_idrac_shortname", "dell_service_tag"]
    filters = ["exprA:amperage_probe_type:^24|26$", "exprB:amperage_reading:.*"]
    filters_expression = "exprA && exprB"

    # 电流探头状态功能 amperageProbeStateCapabilities
    # StateCapabilitiesFlags (INTEGER) {unknownCapabilities(1), enableCapable(2), 
    # notReadyCapable(4), enableAndNotReadyCapable(6)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.600.30.1.3"
    name = "amperage_capab_state"
    is_tag = true

    # 电流探头状态设置 amperageProbeStateSettings
    # StateSettingsFlags (INTEGER) {unknown(1), enabled(2), notReady(4), 
    # enabledAndNotReady(6)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.600.30.1.4"
    name = "amperage_setting_state"
    is_tag = true

    # 电流探头实体状态 amperageProbeStatus
    # StatusProbeEnum (INTEGER) {other(1), unknown(2), ok(3), nonCriticalUpper(4), 
    # criticalUpper(5), nonRecoverableUpper(6), nonCriticalLower(7), 
    # criticalLower(8), nonRecoverableLower(9), failed(10) }
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.600.30.1.5"
    name = "amperage_probe_status"
    is_tag = true

    # 电流探头探测的实际功率 amperageProbeReading 单位瓦特
    # Signed32BitRange (INTEGER) (-2147483647.2147483647)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.600.30.1.6"
    name = "amperage_reading"

    # 电流探头类型 amperageProbeType
    # AmperageProbeTypeEnum (INTEGER)
    # amperageProbeTypeIsPowerSupplyWatts 24
    # amperageProbeTypeIsSystemWatts 26
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.600.30.1.7"
    name = "amperage_probe_type"
    is_tag = true

    # 电流探头名称 amperageProbeLocationName
    # String64 (OCTET STRING) (SIZE (0..64))
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.600.30.1.8"
    name = "power_location_name"
    is_tag = true

    # 系统电池表项 systemBatteryTableEntry
    [[instances.table]]
    name = "dell"
    # systemBatteryChassisIndex, systemBatteryIndex
    index_as_tag = true
    inherit_tags = ["dell_idrac_shortname", "dell_service_tag"]

    # 系统电池状态设置 systemBatteryStateSettings
    # StateSettingsFlags (INTEGER) 
    # {unknown(1), enabled(2), notReady(4), enabledAndNotReady(6)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.600.50.1.4"
    name = "battery_state"
    is_tag = true

    # 系统电池状态 systemBatteryStatus
    #  ObjectStatusEnum (INTEGER) 
    # {other(1), unknown(2), ok(3), nonCritical(4), critical(5), nonRecoverable(6) }
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.600.50.1.5"
    name = "battery_status"

    # 电池的位置名称 systemBatteryLocationName
    # String64 (OCTET STRING) (SIZE (0..64))
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.600.50.1.7"
    name = "battery_location_name"
    is_tag = true

    # 风扇设备条目表 coolingDeviceTableEntry
    [[instances.table]]
    name = "dell"
    # coolingDevicechassisIndex, coolingDeviceIndex
    index_as_tag = true
    inherit_tags = ["dell_idrac_shortname", "dell_service_tag"]

    # 风扇状态设置 coolingDeviceStateSettings
    # StateSettingsFlags (INTEGER) 
    # {unknown(1), enabled(2), notReady(4), enabledAndNotReady(6)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.700.12.1.4"
    name = "cooling_device_state"
    is_tag = true

    # 风扇状态 coolingDeviceStatus
    # StatusProbeEnum (INTEGER) 
    # {other(1), unknown(2), ok(3), nonCriticalUpper(4), criticalUpper(5), nonRecoverableUpper(6), nonCriticalLower(7), criticalLower(    8), nonRecoverableLower(9), failed(10) }
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.700.12.1.5"
    name = "cooling_device_status"

    # 风扇转速 coolingDeviceReading
    # Signed32BitRange (INTEGER) (-2147483647.2147483647)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.700.12.1.6"
    name = "cooling_rpm"

    # 风扇位置名称 coolingDeviceLocationName
    # String64 (OCTET STRING) (SIZE (0..64))
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.700.12.1.8"
    name = "cooling_location_name"
    is_tag = true

    # 温度探针条目表 temperatureProbeTableEntry
    [[instances.table]]
    name = "dell"
    # temperatureProbechassisIndex, temperatureProbeIndex
    index_as_tag = true
    inherit_tags = ["dell_idrac_shortname", "dell_service_tag"]

    # 温度探针状态设置 temperatureProbeStateSettings
    #  StateSettingsFlags (INTEGER) 
    # {unknown(1), enabled(2), notReady(4), enabledAndNotReady(6)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.700.20.1.4"
    name = "temperature_probe_state"
    is_tag = true

    # 温度探针状态 temperatureProbeStatus
    # StatusProbeEnum (INTEGER) 
    # {other(1), unknown(2), ok(3), nonCriticalUpper(4), criticalUpper(5), 
    # nonRecoverableUpper(6), nonCriticalLower(7), criticalLower(8),
    # nonRecoverableLower(9), failed(10) }
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.700.20.1.5"
    name = "temperature_probe_status"

    # 温度值 temperatureProbeReading 单位十分之一温度
    # Signed32BitRange (INTEGER) (-2147483647.2147483647)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.700.20.1.6"
    name = "temperature_value"

    # 温度告警高阈值 temperatureProbeUpperCriticalThreshold 单位十分之一温度
    # Signed32BitRange (INTEGER) (-2147483647.2147483647)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.700.20.1.10"
    name = "temperature_threshold"

    # 温度探针名称 temperatureProbeLocationName
    # String64 (OCTET STRING) (SIZE (0..64))
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.700.20.1.8"
    name = "temperature_probe_name"
    is_tag = true

    # CPU条目表 processorDeviceTableEntry
    [[instances.table]]
    name = "dell"
    # processorDevicechassisIndex, processorDeviceIndex
    index_as_tag = true
    inherit_tags = ["dell_idrac_shortname", "dell_service_tag"]

    # CPU状态设置 processorDeviceStateSettings
    # StateSettingsFlags (INTEGER) 
    # {unknown(1), enabled(2), notReady(4), enabledAndNotReady(6)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.30.1.5"
    name = "cpu_state"
    is_tag = true

    # CPU状态 processorDeviceStatus
    # ObjectStatusEnum (INTEGER) 
    # {other(1), unknown(2), ok(3), nonCritical(4), critical(5), nonRecoverable(6) }
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.30.1.5"
    name = "cpu_status"

    # CPU最大频率 processorDeviceMaximumSpeed 单位 MHz
    # Unsigned32BitRange (INTEGER) (0..2147483647)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.30.1.11"
    name = "cpu_max_speed"
    is_tag = true

    # CPU当前频率 processorDeviceCurrentSpeed 单位 MHz
    # Unsigned32BitRange (INTEGER) (0..2147483647)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.30.1.12"
    name = "cpu_current_speed"
    is_tag = true

    # 电压 processorDeviceVoltage 单位 毫伏
    # Signed32BitRange (INTEGER) (-2147483647.2147483647)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.30.1.14"
    name = "cpu_voltage"
    is_tag = true

    # CPU核心数 processorDeviceCoreCount 
    # Unsigned32BitRange (INTEGER) (0..2147483647)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.30.1.17"
    name = "cpu_core_count"
    is_tag = true

    # CPU线程数 processorDeviceThreadCount
    # Unsigned32BitRange (INTEGER) (0..2147483647)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.30.1.19"
    name = "cpu_thread_count"
    is_tag = true

    # CPU卡槽位置 processorDeviceFQDD
    # FQDDString (OCTET STRING) (SIZE (0..512))
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.30.1.26"
    name = "cpu_fqdd"
    is_tag = true

    # CPU状态信息读取 processorDeviceStatusReading
    # ProcessorDeviceStatusReadingFlags (INTEGER) 
    # {internalError(1), thermalTrip(2), configurationError(32), processorPresent(128), processorDisabled(256), terminatorPresent(512),     processorThrottled(1024) }
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.32.1.6"
    name = "cpu_status_info"

    # 内存条目表 memoryDeviceTableEntry
    [[instances.table]]
    name = "dell"
    # memoryDevicechassisIndex, memoryDeviceIndex
    index_as_tag = true
    inherit_tags = ["dell_idrac_shortname", "dell_service_tag"]

    # 内存状态 memoryDeviceStateSettings
    # StateSettingsFlags (INTEGER) 
    # {unknown(1), enabled(2), notReady(4), enabledAndNotReady(6)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.50.1.4"
    name = "mem_state"
    is_tag = true

    # 内存状态 memoryDeviceStatus
    # ObjectStatusEnum (INTEGER) 
    # {other(1), unknown(2), ok(3), nonCritical(4), critical(5), nonRecoverable(6) }
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.50.1.5"
    name = "mem_status"

    # 内存类型 memoryDeviceType
    # MemoryDeviceTypeEnum (INTEGER) 
    # {deviceTypeIsOther(1), deviceTypeIsUnknown(2), deviceTypeIsDRAM(3), deviceTypeIsEDRAM(4), deviceTypeIsVRAM(5), 
    # deviceTypeIsSRAM(6), deviceTypeIsRAM(7), deviceTypeIsROM(8), deviceTypeIsFLASH(9), deviceTypeIsEEPROM(10), 
    # deviceTypeIsFEPROM(11), deviceTypeIsEPROM(12), deviceTypeIsCDRAM(13), deviceTypeIs3DRAM(14), deviceTypeIsSDRAM(15),
    # deviceTypeIsSGRAM(16), deviceTypeIsRDRAM(17), deviceTypeIsDDR(18), deviceTypeIsDDR2(19), deviceTypeIsDDR2FBDIMM(20), 
    # deviceTypeIsDDR3(24), deviceTypeIsFBD2(25), deviceTypeIsDDR4(26) }
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.50.1.7"
    name = "mem_type"
    is_tag = true

    # 内存槽位全称 memoryDeviceFQDD
    # String64 (OCTET STRING) (SIZE (0..64))
    # DIMM.Socket.A1
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.50.1.26"
    name = "mem_fqdd"
    is_tag = true

    # 内存大小 memoryDeviceSize
    # Unsigned32BitRange (INTEGER) (0..2147483647)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.50.1.14"
    name = "mem_size"
    is_tag = true

    # 内存频率 memoryDeviceSpeed 单位 MHz
    # Unsigned32BitRange (INTEGER) (0..2147483647)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.50.1.15"
    name = "mem_speed"
    is_tag = true

    # 内存当前频率 memoryDeviceCurrentOperatingSpeed 单位 MHz
    # Unsigned32BitRange (INTEGER) (0..2147483647)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.50.1.15"
    name = "mem_current_speed"
    is_tag = true

    # 内存品牌 memoryDeviceManufacturerName
    # String64 (OCTET STRING) (SIZE (0..64))
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.50.1.21"
    name = "mem_brand"
    is_tag = true

    # 内存序列号 memoryDeviceSerialNumberName
    # String64 (OCTET STRING) (SIZE (0..64))
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.50.1.23"
    name = "mem_sn"
    is_tag = true

    # FRU可更换硬件条目表 fruTableEntry
    [[instances.table]]
    name = "dell"
    # fruChassisIndex, fruIndex
    index_as_tag = true
    inherit_tags = ["dell_idrac_shortname", "dell_service_tag"]

    # FRU的状态 fruInformationStatus
    # ObjectStatusEnum (INTEGER) 
    # {other(1), unknown(2), ok(3), nonCritical(4), critical(5), nonRecoverable(6) }
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.2000.10.1.3"
    name = "fru_status"

    # 组件品牌 fruManufacturerName
    # OCTET STRING (SIZE (0..64))
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.2000.10.1.6"
    name = "fru_brand"
    is_tag = true

    # 组件序列号 fruSerialNumberName
    # OCTET STRING (SIZE (0..64))
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.2000.10.1.7"
    name = "fru_sn"
    is_tag = true

    # 组件全称 fruFQDD
    # FQDDString (OCTET STRING) (SIZE (0..512))
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.2000.10.1.12"
    name = "fru_fqdd"
    is_tag = true

    # PCI设备表条目 pCIDeviceTableEntry
    [[instances.table]]
    name = "dell"
    # pCIDevicechassisIndex, pCIDeviceIndex
    index_as_tag = true
    inherit_tags = ["dell_idrac_shortname", "dell_service_tag"]

    # PCI设备是否启动 pCIDeviceStateSettings
    # StateSettingsFlags (INTEGER) 
    # {unknown(1), enabled(2), notReady(4), enabledAndNotReady(6)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.80.1.4"
    name = "pci_device_state"
    is_tag = true

    # PCI设备的健康状态 pCIDeviceStatus
    # ObjectStatusEnum (INTEGER) 
    # {other(1), unknown(2), ok(3), nonCritical(4), critical(5), nonRecoverable(6) }
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.80.1.5"
    name = "pci_device_status"

    # PCI设备的品牌 pCIDeviceManufacturerName
    # String64 (OCTET STRING) (SIZE (0..64))
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.80.1.8"
    name = "pci_device_brand"
    is_tag = true

    # PCI设备信息描述 pCIDeviceDescriptionName
    # String64 (OCTET STRING) (SIZE (0..64))
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.80.1.9"
    name = "pci_device_desc"
    is_tag = true

    # PCI设备FQDD pCIDeviceFQDD
    # FQDDString (OCTET STRING) (SIZE (0..512))
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.80.1.12"
    name = "pci_device_fqdd"
    is_tag = true

    # 网络设备条目表 networkDeviceTableEntry
    [[instances.table]]
    name = "dell"
    # networkDeviceChassisIndex, networkDeviceIndex
    index_as_tag = true
    inherit_tags = ["dell_idrac_shortname", "dell_service_tag"]

    # 网络设备健康状态 networkDeviceStatus
    # ObjectStatusEnum (INTEGER) 
    # {other(1), unknown(2), ok(3), nonCritical(4), critical(5), nonRecoverable(6) }
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.90.1.3"
    name = "network_status"

    # 网络设备连接状态 networkDeviceConnectionStatus
    # NetworkDeviceConnectionStatusEnum (INTEGER) 
    # {connected(1), disconnected(2), driverBad(3), driverDisabled(4), hardwareInitalizing(10), 
    # hardwareResetting(11), hardwareClosing(12), hardwareNotReady(13) }
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.90.1.4"
    name = "network_conn_status"
    is_tag = true

    # 网络设备品牌 networkDeviceVendorName
    # String64 (OCTET STRING) (SIZE (0..64))
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.90.1.7"
    name = "network_vendor_name"
    is_tag = true

    # 网络设备当前Mac地址 networkDeviceCurrentMACAddress
    # String64 (OCTET STRING) (SIZE (0..64))
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.90.1.15"
    name = "network_current_mac"
    conversion = "hwaddr"
    is_tag = true

    # 网络设备永久Mac地址 networkDevicePermanentMACAddress
    # MACAddress (OCTET STRING) (SIZE (6))
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.90.1.16"
    name = "network_permanent_mac"
    conversion = "hwaddr"
    is_tag = true

    # 网络设备FQDD networkDeviceFQDD
    # MACAddress (OCTET STRING) (SIZE (6))
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.4.1100.90.1.30"
    name = "network_fqdd"
    is_tag = true

    # 控制器条目表 controllerTableEntry
    [[instances.table]]
    name = "dell"
    # controllerNumber
    index_as_tag = true
    inherit_tags = ["dell_idrac_shortname", "dell_service_tag"]

    # 存储管理控制器名称 controllerName
    # DISPLAYSTRING
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.1.1.2"
    name = "contr_name"
    is_tag = true

    # 控制器综合状态 controllerRollUpStatus
    # ObjectStatusEnum (INTEGER) 
    # {other(1), unknown(2), ok(3), nonCritical(4), critical(5), nonRecoverable(6) }
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.1.1.37"
    name = "contr_rollup_status"

    # 控制器本身状态 controllerComponentStatus
    # ObjectStatusEnum (INTEGER) 
    # {other(1), unknown(2), ok(3), nonCritical(4), critical(5), nonRecoverable(6) }
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.1.1.38"
    name = "contr_comp_status"

    # 控制器缓存大小 controllerCacheSizeInMB 单位 MB
    # INTEGER (1..2147483647)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.1.1.9"
    name = "contr_cache_size"

    # 控制器加密模式 controllerSecurityStatus
    # INTEGER {unknown(1),none(2),lkm(3)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.1.1.72"
    name = "contr_security_status"

    # 控制器I/O负载模式 controllerLoadBalanceSetting
    # INTEGER {other(1),unsupported(2),auto(3),none(4)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.1.1.75"
    name = "contr_balance_mode"

    # 控制器最大速度 controllerMaxCapSpeed
    # INTEGER {unknown(1),oneDotFiveGbps(2),threeGbps(3),sixGbps(4),twelveGbps(5)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.1.1.76"
    name = "contr_max_speed"

    # 控制器显示名称 controllerDisplayName
    # DISPLAYSTRING
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.1.1.79"
    name = "contr_display_name"
    is_tag = true

    # 控制器固件版本 controllerFWVersion
    # DISPLAYSTRING
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.1.1.8"
    name = "contr_fw_version"
    is_tag = true

    # 控制器驱动版本 controllerDriverVersion
    # DISPLAYSTRING
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.1.1.41"
    name = "contr_driver_version"
    is_tag = true

    # 控制器资源用于在需要重建失败磁盘时进行重建的百分比 controllerRebuildRate
    # INTEGER (0..100)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.1.1.7"
    name = "contr_rebuild_rate"

    # 在添加物理磁盘或更改存储在磁盘组上的虚拟磁盘的RAID级别后重建的百分比 controllerReconstructRate
    # INTEGER (0..100)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.1.1.48"
    name = "contr_reson_rate"

    # 参与虚拟磁盘或热备份的磁盘执行巡逻读取的百分比 controllerPatrolReadRate
    # INTEGER (0..100)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.1.1.49"
    name = "contr_patrol_rate"

    # 创建冗余虚拟磁盘后执行背景初始化的百分比 controllerBGIRate
    # INTEGER (0..100)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.1.1.50"
    name = "contr_bgi_rate"

    # 冗余虚拟磁盘执行检查一致性的百分比 controllerCheckConsistencyRate
    # INTEGER (0..100)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.1.1.51"
    name = "contr_check_rate"

    # Raid条目表 virtualDiskTableEntry
    [[instances.table]]
    name = "dell"
    # virtualDiskNumber
    index_as_tag = true
    inherit_tags = ["dell_idrac_shortname", "dell_service_tag"]

    # Raid 状态 virtualDiskState
    # INTEGER {unknown(1),online(2),failed(3),degraded(4)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.140.1.1.4"
    name = "virtual_disk_status"

    # Raid 磁盘大小 virtualDiskSizeInMB 单位 MB
    # INTEGER (1..2147483647)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.140.1.1.6"
    name = "virtual_disk_size"

    # Raid 类型 virtualDiskLayout
    # INTEGER {other(1),r0(2),r1(3),r5(4),r6(5),r10(6),r50(7),r60(8),concatRaid1(9),concatRaid5(10)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.140.1.1.13"
    name = "virtual_disk_layout"
    is_tag = true

    # Raid 磁盘的条带大小 virtualDiskStripeSize
    #  INTEGER {other(1),default(2),fiveHundredAndTwelvebytes(3),oneKilobytes(4),
    # twoKilobytes(5),fourKilobytes(6),eightKilobytes(7),sixteenKilobytes(8),thirtyTwoKilobytes(9),
    # sixtyFourKilobytes(10),oneTwentyEightKilobytes(11),twoFiftySixKilobytes(12),
    # fiveOneTwoKilobytes(13),oneMegabye(14),twoMegabytes(15),fourMegabytes(16),
    # eightMegabytes(17),sixteenMegabytes(18)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.140.1.1.14"
    name = "virtual_disk_stripe"
    is_tag = true

    # Raid 协议 virtualDiskAvailableProtocols
    # DISPLAYSTRING SAS SATA
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.140.1.1.32"
    name = "virtual_disk_proto"
    is_tag = true

    # Raid 磁盘类型 virtualDiskMediaType
    # DISPLAYSTRING HDD SSD
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.140.1.1.33"
    name = "virtual_disk_type"
    is_tag = true

    # Raid 磁盘显示名称 virtualDiskDisplayName
    # DISPLAYSTRING
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.140.1.1.36"
    name = "virtual_disk_display"
    is_tag = true

    # Raid 磁盘FQDD virtualDiskFQDD
    # DISPLAYSTRING
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.140.1.1.35"
    name = "virtual_disk_fqdd"
    is_tag = true

    # 物理磁盘状态虚拟表 physicalDiskTableEntry
    [[instances.table]]
    name = "dell"
    # physicalDiskNumber
    index_as_tag = true
    inherit_tags = ["dell_idrac_shortname", "dell_service_tag"]

    # 物理磁盘的状态 physicalDiskState
    # INTEGER
    # {unknown(1),ready(2),online(3),foreign(4),offline(5),
    # blocked(6),failed(7),nonraid(8),removed(9),readonly(10)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.4"
    name = "physical_disk_status"

    # 物理磁盘本身的状态 不考虑任何包含的组件状态的传播 physicalDiskComponentStatus
    # ObjectStatusEnum (INTEGER) {other(1), unknown(2), ok(3), 
    # nonCritical(4), critical(5), nonRecoverable(6) }
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.24"
    name = "physical_disk_self_status"

    # 磁盘名称 physicalDiskName
    # DISPLAYSTRING 
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.2"
    name = "physical_disk_name"
    is_tag = true

    # 磁盘热备状态 physicalDiskSpareState
    # INTEGER {notASpare(1),dedicatedHotSpare(2),globalHotSpare(3)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.21"
    name = "physical_disk_spare"
    is_tag = true

    # 预测故障警报 physicalDiskSmartAlertIndication
    # BooleanType (INTEGER) (0..1)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.31"
    name = "physical_disk_smart_alert"
    is_tag = true

    # 物理磁盘的电源状态 physicalDiskPowerState
    # INTEGER {other(1),spunUp(2),spunDown(3),transition(4),on(5)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.42"
    name = "physical_disk_power_state"

    # SSD的磨损百分比 physicalDiskRemainingRatedWriteEndurance
    # INTEGER (0..255) 0~100 无效255
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.49"
    name = "physical_disk_remain_rate"
    is_tag = true

    # 物理磁盘正在进行时的操作 physicalDiskOperationalState
    # INTEGER {notApplicable(1),rebuild(2),clear(3),copyback(4)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.50"
    name = "physical_disk_oper_state"
    is_tag = true

    # 正在物理磁盘上执行的操作的进度百分比 physicalDiskProgress
    #  INTEGER (0..100)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.51"
    name = "physical_disk_progress"
    is_tag = true

    # 物理磁盘的安全/加密状态 physicalDiskSecurityStatus
    # INTEGER {supported(1),notSupported(2),secured(3),locked(4),foreign(5)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.52"
    name = "physical_disk_sec_status"
    is_tag = true

    # 物理磁盘信息虚拟表 physicalDiskTableEntry
    [[instances.table]]
    name = "dell"
    # physicalDiskNumber
    index_as_tag = true
    inherit_tags = ["dell_idrac_shortname", "dell_service_tag"]

    # 磁盘名称 physicalDiskName
    # DISPLAYSTRING 
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.2"
    name = "physical_disk_name"
    is_tag = true

    # 磁盘品牌 physicalDiskManufacturer
    # DISPLAYSTRING 
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.3"
    name = "physical_disk_brand"
    is_tag = true

    # 磁盘序列号 physicalDiskSerialNo
    # DISPLAYSTRING 
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.7"
    name = "physical_disk_serialnum"
    is_tag = true

    # 磁盘产品ID physicalDiskProductID
    # DISPLAYSTRING 
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.6"
    name = "physical_disk_productid"
    is_tag = true

    # 磁盘固件版本 physicalDiskRevision
    # DISPLAYSTRING 
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.8"
    name = "physical_disk_revision"
    is_tag = true

    # 物理磁盘的总线类型 physicalDiskBusType
    # INTEGER {unknown(1),scsi(2),sas(3),sata(4),fibre(5),pcie(6),nvme(7)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.21"
    name = "physical_disk_bus_type"

    # 物理磁盘类型 physicalDiskMediaType
    # INTEGER {unknown(1),hdd(2),ssd(3)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.35"
    name = "physical_disk_media_type"
    is_tag = true

    # 物理磁盘的尺寸形状 physicalDiskFormFactor
    # INTEGER {unknown(1),oneDotEight(2),twoDotFive(3),threeDotFive(4),edsffe1DotL(5)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.53"
    name = "physical_disk_form_factor"
    is_tag = true

    # 物理磁盘是否支持T10 PI physicalDiskT10PICapability
    # INTEGER {other(1),capable(2),notCapable(3)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.57"
    name = "physical_disk_picap"
    is_tag = true

    # 物理磁盘的块大小(以字节为单位)这不适用于NVMe设备 physicalDiskBlockSizeInBytes
    # INTEGER (1..2147483647)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.58"
    name = "physical_disk_blocksize"
    is_tag = true

    # 仅适用于NVMe设备 设备支持的NVMe协议版本 physicalDiskProtocolVersion
    # DISPLAYSTRING
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.59"
    name = "physical_disk_proto_version"
    is_tag = true

    # 物理磁盘速率虚拟表 physicalDiskTableEntry
    [[instances.table]]
    name = "dell"
    # physicalDiskNumber
    index_as_tag = true
    inherit_tags = ["dell_idrac_shortname", "dell_service_tag"]

    # 磁盘名称 physicalDiskName
    # DISPLAYSTRING 
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.2"
    name = "physical_disk_name"
    is_tag = true

    # 磁盘大小 physicalDiskCapacityInMB
    # INTEGER (1..2147483647)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.11"
    name = "physical_disk_capacity"
    is_tag = true

    # 磁盘使用大小 physicalDiskUsedSpaceInMB
    # INTEGER (1..2147483647)
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.17"
    name = "physical_disk_usage"

    # 磁盘启动时协商速度 physicalDiskNegotiatedSpeed
    # INTEGER {unknown(1),oneDotFiveGbps(2),threeGbps(3),sixGbps(4),twelveGbps(5),fiveGTps(6),
    # eightGTps(7),sixteenGTps(8),thirtytwoGTps(9)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.29"
    name = "physical_disk_neg_speed"
    is_tag = true

    # 磁盘支持的最大数据传输速度 physicalDiskCapableSpeed 单位为每秒千兆比特(Gbps)
    # 1:The speed could not be determined.2. 1.5 Gbps3:3.0 Gbps4:6.0 Gbps5:12.0 Gbps
    # 6:5 GT/s (applicable for NVMe devices).
    # 7:8 GT/s (applicable for NVMe devices).
    # 8:16 GT/s (applicable for NVMe devices).
    # 9:32 GT/s (applicable for NVMe devices).
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.30"
    name = "physical_disk_cap_speed"
    is_tag = true

    # 物理磁盘类型 physicalDiskMediaType
    # INTEGER {unknown(1),hdd(2),ssd(3)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.35"
    name = "physical_disk_media_type"
    is_tag = true

    # 仅适用于NVMe设备 设备支持的NVMe协议版本 physicalDiskProtocolVersion
    # DISPLAYSTRING
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.59"
    name = "physical_disk_proto_version"
    is_tag = true

    # 仅适用于NVMe设备 设备初始化期间与主机协商的PCIe链接宽度 physicalDiskPCIeNegotiatedLinkWidth
    # INTEGER {other(1),notApplicable(2),byOne(3),byTwp(4),
    # byFour(5),byEight(6),bySixteen(7),byThirtyTwp(8)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.60"
    name = "physical_disk_pcie_nego"
    is_tag = true

    # 仅适用于NVMe设备 设备能够支持的PCIe链路宽度 physicalDiskPCIeCapableLinkWidth
    # INTEGER {other(1),notApplicable(2),byOne(3),byTwp(4),
    # byFour(5),byEight(6),bySixteen(7),byThirtyTwp(8)}
    [[instances.table.field]]
    oid = ".1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.61"
    name = "physical_disk_pcie_capa"
    is_tag = true


部署完成后,检查configmap
1752062762022.png

接下来创建PVC存储

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: categraf-pvc
  namespace: tools
  labels:
    app: categraf
spec:
  storageClassName: "dsm7-nfs-client"
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi


我这里直接使用StorageClass了,存储空间1G即可,用于存储mibs文件

创建Deployment文件

- 初始化容器用于wget下载Dell mibs文件,下载地址可以后期自行修改
- mibs文件在github中,https://github.com/robotneo/phymonarch/tree/main/snmp/snmp_exporter
- mibs文件我存放在/data目录中,后期有需要也可以自行修改
- dockerproxy.frps.fun镜像是加速地址

apiVersion: apps/v1
kind: Deployment
metadata:
  name: categraf-snmp
  namespace: tools
spec:
  replicas: 1
  selector:
    matchLabels:
      app: categraf
  template:
    metadata:
      labels:
        app: categraf
    spec:
      initContainers:
      - name: download-and-extract
        image: dockerproxy.frps.fun/library/busybox:latest
        command:
        - sh
        - -c
        - >-
          wget -O /tmp/mibs_dell_2025-07-09.tar.gz https://d.frps.cn/file/kubernetes/image/mibs_dell_2025-07-09.tar.gz &&
          tar -xzvf /tmp/mibs_dell_2025-07-09.tar.gz -C /data/ &&
          rm /tmp/mibs_dell_2025-07-09.tar.gz  # 下载完成后删除临时文件
        volumeMounts:
        - name: data-mibs
          mountPath: /data
      containers:
      - name: categraf-snmp
        image: flashcatcloud/categraf:latest
        ports:
        - containerPort: 9100
        volumeMounts:
        - name: config
          mountPath: /etc/categraf/conf
        - name: input-snmp
          mountPath: /etc/categraf/conf/input.snmp
        - name: data-mibs
          mountPath: /data 
        resources:
          limits:
            cpu: 150m
            memory: 512Mi
          requests:
            cpu: 150m
            memory: 512Mi
      volumes:
      - name: config
        configMap:
          name: categraf-config
      - name: input-snmp
        configMap:
          name: categraf-config-input
      - name: data-mibs
        persistentVolumeClaim:
          claimName: categraf-pvc


配置文件验证完毕后,我们创建Pod即可

root@k8s-master-01:~/exporter/snmp# kubectl get pod -n tools|grep categraf
categraf-snmp-69f6d68bc7-stghk      1/1     Running   0          33m


接下来查看日志

root@k8s-master-01:~/exporter/snmp# kubectl get pod -n tools|grep categraf
categraf-snmp-69f6d68bc7-stghk      1/1     Running   0          33m
root@k8s-master-01:~/exporter/snmp# kubectl logs  -f -n tools categraf-snmp-69f6d68bc7-stghk
Defaulted container "categraf-snmp" out of: categraf-snmp, download-and-extract (init)
2025/07/09 11:53:58 main.go:151: I! runner.binarydir: /usr/bin
2025/07/09 11:53:58 main.go:152: I! runner.hostname: categraf-snmp-69f6d68bc7-stghk
2025/07/09 11:53:58 main.go:153: I! runner.fd_limits: (soft=1048576, hard=1048576)
2025/07/09 11:53:58 main.go:154: I! runner.vm_limits: (soft=unlimited, hard=unlimited)
2025/07/09 11:53:58 provider_manager.go:60: I! use input provider: [local]
2025/07/09 11:53:58 prometheus_agent.go:19: I! prometheus scraping disabled!
2025/07/09 11:53:58 ibex_agent.go:19: I! ibex agent disabled!
2025/07/09 11:53:58 agent.go:38: I! agent starting
2025/07/09 11:54:09 metrics_agent.go:323: I! input: local.snmp started
2025/07/09 11:54:09 agent.go:46: I! [*agent.MetricsAgent] started
2025/07/09 11:54:09 agent.go:49: I! agent started


1752063176524.png

还可以直接进入容器,检查配置是否正常等

1752063304925.png

部署完毕可以到Prometheus上看一下,是否有snmp相关的数值
1752063365171.png

我们随便找个看下是否可以获取到数据
1752063426325.png

1752063438387.png

Grafana






https://i4t.com/25669.htmljavascript:void(0))

Kubernetes v1.29.9安装Grafana 12并开启匿名访问


新闻联播老司机

- 25年7月9日
- 喜欢:0
- 浏览:353

Prometheus能查到对应数据,接下来我们就配置Grafana 模板
导入ID21107

1752063561378.png

等几分钟采集数据,最终效果图如下

1752063619314.png

1752063678922.png
1752063719351.png
1752063694885.png