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-mode
HTTP-эндпойнты для доступа к метрикам:
/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