# 多合一raid卡raid_exporter **Repository Path**: hengjiui/raid_exporter ## Basic Information - **Project Name**: 多合一raid卡raid_exporter - **Description**: 多合一raid卡raid_exporter - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-29 - **Last Updated**: 2026-02-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 多合一RAID卡监控导出器(raid_exporter) ## 介绍 这是一个用于监控多种RAID卡状态的导出器工具,专为 Prometheus 设计。它能够从不同类型的RAID控制器中提取磁盘和RAID阵列的状态信息,以便进行监控和告警。 支持的RAID控制器包括: - **MegaRAID**:通过 `MegaCli64` 命令获取磁盘和阵列信息 - **Arcconf**:解析 `arcconf` 命令输出 - **Storcli**:解析 `storcli` 命令输出 ## 软件架构 该项目基于 Go 编写,基于 Prometheus Node Exporter 架构,主要组件包括: - **Collector 模块**:负责从不同RAID控制器(如 MegaRAID、Arcconf、Storcli)中收集磁盘和RAID阵列的状态信息 - **Parser 模块**:解析日志文件或命令行输出,提取关键指标 - **Prometheus 指标**:将收集到的信息转换为 Prometheus 可识别的指标格式 - **HTTP 服务**:提供 `/metrics` 接口供 Prometheus 抓取数据 ## 安装教程 1. 确保系统已安装 Go 环境(1.24.2或更高版本) 2. 克隆项目到本地: ```bash git clone https://gitee.com/hengjiui/raid_exporter.git ``` 3. 进入项目目录并构建: ```bash cd raid_exporter go build -o raid_exporter ``` 4. 运行导出器: 运行前确保raidtool 工具放在与raid_exporter相同的bin目录下 ```bash . ├── bin │ └── raidtool └── raid_exporter ./raid_exporter ``` ## 使用说明 1. 默认情况下,导出器会在 `http://localhost:9102/metrics` 提供监控指标 2. Prometheus 配置示例: ```yaml scrape_configs: - job_name: 'raid_exporter' static_configs: - targets: ['localhost:9102'] ``` ### 命令行参数 - `--web.telemetry-path`:指定暴露指标的路径,默认为 `/metrics` - `--web.disable-exporter-metrics`:排除导出器本身的指标(如 promhttp_*, process_*, go_*) - `--web.max-requests`:并行抓取请求的最大数量,默认为 40 - `--collector.disable-defaults`:默认禁用所有收集器 - `--runtime.gomaxprocs`:设置 Go 程序运行的 CPU 核心数 ### 收集器 该导出器包含以下收集器: 1. **raiddisk**(默认启用):收集 RAID 物理磁盘错误信息 2. **raidlogicdisk**(默认启用):收集 RAID 逻辑磁盘信息,包括每个逻辑磁盘包含的物理磁盘数量 可以通过 URL 参数动态启用或禁用特定的收集器: - 启用特定收集器:`http://localhost:9102/metrics?collect[]=raidlogicdisk` - 禁用特定收集器:`http://localhost:9102/metrics?exclude[]=raiddisk` ## 支持的指标 ### RAID 物理磁盘指标 - `raid_disk_error_count`:RAID 磁盘错误计数,标签包括: - `disk`:磁盘标识符 - `errorType`:错误类型(如 Media Error Count、Other Error Count 等) - `controller`:控制器名称 ### RAID 逻辑磁盘指标 - `raid_logic_disk_number_of_drives`:逻辑磁盘中包含的物理磁盘数量,标签包括: - `disk`:磁盘标识符 - `raid_level`:RAID 级别(如 RAID0、RAID1、RAID5 等) - `size`:磁盘大小 - `state`:磁盘状态(如 Optimal、Degraded 等) - `raid_logic_disk_status`:逻辑磁盘状态指标,数值表示不同状态,标签包括: - `disk`:磁盘标识符 - `raid_level`:RAID 级别 - `size`:磁盘大小 - `state`:磁盘状态 - 状态值映射: - 0: optimal (最优) - 1: degraded (降级) - 2: partially degraded (部分降级) - 3: offline (离线) - 4: failed (故障) - 5: rebuilding (重建中) - 6: rebuild failed (重建失败) - -1: other/unknown (其他/未知) ## 支持的RAID控制器详细信息 ### MegaRAID 支持 - 使用 `MegaCli64` 或 `storcli` 工具收集信息 - 支持的RAID级别:RAID0、RAID1、RAID5、RAID10等 - 监控物理磁盘错误计数(Media Error Count、Other Error Count、Predictive Failure Count等) - 监控逻辑磁盘状态和配置信息 ### Storcli 支持 - 使用 `storcli` 命令行工具收集信息 - 自动解析VD(Virtual Drive)信息 - 提取RAID级别、状态、大小和物理磁盘数量 ### Arcconf 支持 - 使用 `arcconf` 命令行工具收集信息 - 支持逻辑设备和物理设备信息解析 - 提取RAID级别、状态和设备数量 ## 部署说明 ### Linux 系统部署 1. 将编译好的 `raid_exporter` 和 `bin/raidtool` 放置在同一个目录 2. 确保 `raidtool` 具有执行权限 3. 启动服务:`./raid_exporter` ### 系统要求 - Go 1.24.2 或更高版本(编译时) - 支持的RAID控制器管理工具(MegaCli64/storcli/arcconf) - 足够的权限执行RAID管理命令 ## 配置说明 ### 自定义收集器配置 - 默认启用 `raiddisk` 和 `raidlogicdisk` 收集器 - 可通过命令行参数控制收集器启用状态 - 支持URL参数动态过滤收集器 ### Prometheus 配置示例 ```yaml scrape_configs: - job_name: 'raid_exporter' static_configs: - targets: ['localhost:9102'] scrape_interval: 30s scrape_timeout: 10s ``` ## 参与贡献 1. Fork 本仓库 2. 创建新分支(`feat/your-feature-name`) 3. 提交代码并编写测试 4. 创建 Pull Request 并等待审核 ## 特性 1. 项目基于 Prometheus Node Exporter 架构,易于扩展 2. 支持多种RAID控制器,实现"多合一"监控 3. 提供详细的日志解析功能,便于调试和问题追踪 4. 支持自动检测不同RAID工具的输出格式 5. 具备灵活的收集器启用/禁用机制 6. 提供详细的RAID状态监控,包括物理磁盘错误和逻辑磁盘状态 ## 许可证 本项目采用 Apache License, Version 2.0 许可证。详情请查看 [LICENSE](LICENSE) 文件。