ipmi_exporter
Описание
IPMI Exporter — это сторонний Prometheus-экспортер, предназначенный для сбора метрик с устройств, поддерживающих протокол IPMI (Intelligent Platform Management Interface). Он запускается как самостоятельный процесс или сервис, предоставляя метрики через HTTP-эндпойнты.
Репозиторий: prometheus-community/ipmi_exporter
Официальная документация: Настройка экспортера
Используемые технологии: Go, FreeIPMI, Prometheus
Интеграция: Управляется агентом мониторинга
astra-monitoring-iclдля запуска, проверки состояния и передачи метрик вvmagent.
Возможности
Сбор метрик с IPMI-совместимых устройств (серверы, BMC).
Поддержка различных коллекторов:
bmc,ipmi,chassis,dcmi,bmc-watchdog,sel,sm-lan-modeHTTP-эндпойнты для доступа к метрикам:
/metrics(общие метрики) и/ipmi?target=<адрес>(метрики конкретного устройства).Настраиваемые параметры через YAML-конфигурацию.
Интеграция с агентом для управления жизненным циклом (запуск, остановка, health check).
Требования
Агент мониторинга: Установленный и настроенный агент
astra-monitoring-icl.Бинарник:
ipmi_exporter(например,astramon-ipmi_exporter-custom) в папке, указанной вexporters.directory.FreeIPMI: Установленные утилиты (например,
ipmimonitoring) для работы с IPMI.Права доступа: Настройка учетных данных IPMI на целевых устройствах.
sudo (опционально): Для выполнения команд IPMI, если требуется повышенный уровень привилегий.
Настройка и запуск через агент
1. Установка бинарника
Скачайте бинарник:
Загрузите
ipmi_exporterиз официального репозитория или соберите из исходного кода.Пример команды для скачивания (замените
<version>на актуальную версию):wget https://github.com/prometheus-community/ipmi_exporter/releases/download/<version>/ipmi_exporter-<version>.linux-amd64.tar.gz tar -xzf ipmi_exporter-<version>.linux-amd64.tar.gz
Разместите бинарник:
Скопируйте бинарник (например,
ipmi_exporter) в папку, указанную в конфигурации агента (exporters.directory, по умолчаниюtest/exporters):mv ipmi_exporter-<version>.linux-amd64/ipmi_exporter test/exporters/astramon-ipmi_exporter-customУбедитесь, что имя бинарника соответствует значению
nameв конфигурации.
Создайте конфигурационный файл:
Скопируйте YAML-конфигурацию экспортера (например,
ipmi-conf.yml) в папку, доступную агенту (например,test/exporters):cp ipmi-conf.yml test/exporters/
2. Настройка агента
Настройка IPMI Exporter осуществляется через конфигурационный файл агента (test/utils/config.yaml). Добавьте следующие секции:
Раздел ipmi
ipmi:
enabled: true
path: test/utils/ipmi-prod
server_address: 0.0.0.0:9290
health_interval: 30s
update_info_interval: 30s
log_level: debug
log_file: ipmi.log
manager:
exporter_config_path: ./test/utils/ipmi/config.yaml
targets:
- name: bmc-server-1
target: 192.168.1.10
scrape_interval: 60s
tech_account_name: ipmi_user
username: ADMIN
password: PASSWORD
privilege: admin
collectors:
- bmc
- sensor
driver: lanplus
labels:
rack: "1"
unit: "10"
custom_args:
ipmi:
- "ipmimonitoring"
- name: bmc-server-2
target: 192.168.1.11
scrape_interval: 60s
tech_account_name: ipmi_user
username: readonly
password: password123
disabled: true
Поля:
enabled: Включает модуль IPMI.path: Папка для хранения данных экспортера.server_address: Адрес, на котором экспортер слушает запросы.health_interval: Интервал проверки состояния.update_info_interval: Интервал обновления информации.log_levelиlog_file: Настройки логирования.manager.exporter_config_path: Путь к конфигурации экспортера.manager.targets: Список устройств для опроса:name: Уникальное имя устройства.target: IP-адрес устройства.scrape_interval: Интервал опроса (например,60s).username,password,privilege: Учетные данные IPMI.collectors: Список коллекторов (например,bmc,sensor).driver: Драйвер IPMI (например,lanplus).labels: Метаданные для метрик.custom_args: Дополнительные аргументы (например, командыipmimonitoring).disabled: Отключает опрос устройства.
Раздел metrics
metrics:
custom_targets:
- name: ipmi_exporter1
component: 192.168.1.10
target: 127.0.0.1:9290
metrics_path: /ipmi?target=192.168.1.10
labels:
instance: bmc-server-1
scrape_interval: 60s
- name: ipmi_exporter2
component: 192.168.1.11
target: 127.0.0.1:9290
metrics_path: /ipmi?target=192.168.1.11
labels:
instance: bmc-server-2
scrape_interval: 60s
disabled: true
Поля:
name: Уникальное имя дляvmagent.component: IP-адрес устройства для идентификации.target: Адрес экспортера.metrics_path: Эндпойнт для сбора метрик (например,/ipmi?target=192.168.1.10).labels: Дополнительные метки для метрик.scrape_interval: Интервал сбора метрик.disabled: Отключает сбор метрик для этого таргета.
3. Конфигурация IPMI Exporter
Создайте файл ipmi-conf.yml (указанный в exporters.args):
modules:
default:
user: "ADMIN"
pass: "PASSWORD"
driver: "lanplus"
privilege: "admin"
collectors:
- bmc
- ipmi
- chassis
- dcmi
collector_cmd:
ipmi: sudo
custom_args:
ipmi:
- "ipmimonitoring"
Критические параметры:
userиpass: Учетные данные для доступа к IPMI-устройству.driver: Протокол IPMI (например,lanplusдля IPMI v2.0).privilege: Уровень доступа (например,user,admin).collectors: Список активных коллекторов (поддерживаемые:bmc,ipmi,chassis,dcmi, и т.д.).collector_cmd: Команда для выполнения коллектора (например,sudoдляipmi).custom_args: Дополнительные аргументы для команд (например,"ipmimonitoring").
4. Запуск агента
Убедитесь, что агент настроен и конфигурация валидна:
go run ./cmd/agent --config test/utils/config.yamlПроверьте логи агента:
tail -f test.logУбедитесь, что экспортер запущен:
curl http://127.0.0.1:9290/health
Метрики
IPMI Exporter предоставляет метрики через два основных эндпойнта:
Эндпойнт /metrics
Общие метрики экспортера и статус опроса.
Метрика |
Тип |
Описание |
Пример |
|---|---|---|---|
|
Gauge |
Длительность выполнения IPMI-запросов (секунды) |
|
|
Gauge |
Статус опроса устройства (1 — успешно, 0 — ошибка) |
|
|
Various |
Стандартные метрики Go (память, горутины) |
|
|
Various |
Метрики HTTP-запросов Prometheus |
|
Эндпойнт /ipmi?target=<адрес>
Метрики конкретного устройства, указанного в параметре target.
Метрика |
Тип |
Описание |
Пример |
|---|---|---|---|
|
Gauge |
Температура датчика (°C) |
|
|
Gauge |
Статус питания шасси (1 — включено, 0 — выключено) |
|
|
Gauge |
Скорость вентилятора (0 — норма, 1 — ошибка) |
|
|
Gauge |
Напряжение (0 — норма, 1 — ошибка) |
|
Проверка работоспособности
Health Check:
Проверьте состояние экспортера:
curl http://127.0.0.1:9290/healthОжидаемый ответ:
OKили HTTP 200.
Метрики:
Проверьте общие метрики:
curl http://127.0.0.1:9290/metricsПроверьте метрики устройства:
curl http://127.0.0.1:9290/ipmi?target=192.168.1.10
Логи:
Проверьте логи экспортера:
tail -f test/exporters/ipmi-exporter.logПроверьте логи агента:
tail -f ipmi.log
Устранение ошибок
Ошибки конфигурации
Ошибка:
ipmi_up{collector="bmc"} 0Причина: Устройство недоступно или неверные учетные данные.
Решение:
Проверьте
user,pass, иprivilegeвipmi-conf.yml.Убедитесь, что устройство доступно:
ipmiping 192.168.1.10Проверьте права доступа на устройстве.
Ошибка:
exec: "ipmimonitoring": executable file not foundПричина: Утилита
ipmimonitoringне установлена или не доступна.Решение:
Установите FreeIPMI:
sudo apt-get install freeipmi-toolsПроверьте наличие
sudoдляcollector_cmd.
Ошибка:
listen tcp 0.0.0.0:9290: bind: address already in useПричина: Порт
9290занят.Решение:
Измените
server_addressвipmiна свободный порт.Проверьте занятые порты:
netstat -tulnp | grep 9290
Общие ошибки
Логи агента: Проверьте
ipmi.logилиtest.logна наличие ошибок.
Ресурсы для диагностики
Пример полной конфигурации
test/utils/config.yaml
general:
id: test
name: test-name
local_server: localhost:7719
base_directory: test/utils
hostname: localhost
ip: 127.0.0.2
log_level: debug
upstream_address: http://localhost:7719
api_version: v1
insecure: true
load_binaries: true
test_mode: true
ipmi:
enabled: true
path: test/utils/ipmi-prod
server_address: 0.0.0.0:9290
health_interval: 30s
update_info_interval: 30s
log_level: debug
log_file: ipmi.log
manager:
exporter_config_path: ./test/utils/ipmi/config.yaml
targets:
- name: bmc-server-1
target: 192.168.1.10
scrape_interval: 60s
tech_account_name: ipmi_user
username: ADMIN
password: PASSWORD
privilege: admin
collectors:
- bmc
- sensor
driver: lanplus
labels:
rack: "1"
unit: "10"
custom_args:
ipmi:
- "ipmimonitoring"
metrics:
custom_targets:
- name: ipmi_exporter1
component: 192.168.1.10
target: 127.0.0.1:9290
metrics_path: /ipmi?target=192.168.1.10
labels:
instance: bmc-server-1
scrape_interval: 60s
test/exporters/ipmi-conf.yml
modules:
default:
user: "ADMIN"
pass: "PASSWORD"
driver: "lanplus"
privilege: "admin"
collectors:
- bmc
- ipmi
- chassis
- dcmi
collector_cmd:
ipmi: sudo
custom_args:
ipmi:
- "ipmimonitoring"
Дополнительные рекомендации
Безопасность:
Храните учетные данные (
user,pass) в безопасном месте (например, используйте секреты в CI/CD).Ограничьте доступ к портам экспортера (
9290) через фаервол.
Мониторинг:
Настройте алерты в Prometheus на основе
ipmi_upдля обнаружения сбоев.Пример правила:
groups: - name: ipmi_alerts rules: - alert: IPMIDown expr: ipmi_up == 0 for: 5m labels: severity: critical annotations: summary: "IPMI device {{ $labels.instance }} is down"
Логирование:
Используйте
vectorдля агрегации логов экспортера:logs: sources: - ipmi_exporter vector_config_names: - ipmi_logs
Примечание
Если у вас возникли вопросы или проблемы с настройкой экспортера, обратитесь в техническую поддержку Astra Monitoring. Как это сделать, см. рекомендации
Также могут быть полезны Issues