콘텐츠로 이동

IPMI

·


IPMI 메트릭은 모니터링 대상 장치의 전류, 전압, 전력 소비량, 사용률, 팬 회전 속도, 온도 및 장치 상태를 표시합니다.

IPMI는 Intelligent Platform Management Interface의 약자로, Intel 아키텍처 기반 엔터프라이즈 시스템의 주변 장치를 관리하기 위한 업계 표준입니다. 이 표준은 Intel, Hewlett-Packard, NEC, Dell Computer 및 SuperMicro가 제정했습니다. IPMI를 사용하면 온도, 전압, 팬 작동 상태, 전원 상태 등 서버의 물리적 상태를 모니터링할 수 있습니다.

IPMI를 사용하면 운영 및 유지보수 시스템이 모니터링 대상 서버와 기타 장치의 운영 상태 지표를 비침입 방식으로 수집하여 정보 보안을 유지할 수 있습니다.

설정

사전 조건

  • ipmitool 도구 설치

DataKit은 ipmitool을 통해 IPMI 데이터를 수집하므로 이 도구를 머신에 설치해야 합니다. 다음 명령으로 설치할 수 있습니다.

# CentOS
yum -y install ipmitool

# Ubuntu
sudo apt-get update && sudo apt -y install ipmitool

# macOS
brew install ipmitool # macOS
  • 모듈 로드
modprobe ipmi_msghandler
modprobe ipmi_devintf

설치 후 다음 명령을 실행하면 IPMI 서버의 출력 정보를 확인할 수 있습니다.

ipmitool -I lanplus -H <IP-address> -U <username> -P <password> sdr elist

SEL              | 72h | ns  |  7.1 | No Reading
Intrusion        | 73h | ok  |  7.1 | 
Fan1A RPM        | 30h | ok  |  7.1 | 2160 RPM
Fan2A RPM        | 32h | ok  |  7.1 | 2280 RPM
Fan3A RPM        | 34h | ok  |  7.1 | 2280 RPM
Fan4A RPM        | 36h | ok  |  7.1 | 2400 RPM
Fan5A RPM        | 38h | ok  |  7.1 | 2280 RPM
Fan6A RPM        | 3Ah | ok  |  7.1 | 2160 RPM
Inlet Temp       | 04h | ok  |  7.1 | 23 degrees C
Exhaust Temp     | 01h | ok  |  7.1 | 37 degrees C
Temp             | 0Fh | ok  |  3.2 | 45 degrees C
... more
Note
  1. IP 주소는 원격으로 관리하는 서버의 IPMI 포트 주소를 의미합니다
  2. 서버의 IPMI Settings -> Enable IPMI on LAN 옵션을 활성화해야 합니다
  3. 서버의 Channel Privilege Level Restrictions 운영자 수준을 <User Name> 권한 수준과 일치시켜야 합니다
  4. ipmitool 도구는 DataKit을 실행하는 머신에 설치합니다.

수집기 설정

DataKit 설치 디렉터리의 conf.d/samples로 이동하여 ipmi.conf.sample을 복사한 뒤 이름을 ipmi.conf로 변경합니다. 예시는 다음과 같습니다.

[[inputs.ipmi]]
  ## If you have so many servers that 10 seconds can't finish the job.
  ## You can start multiple collectors.

  ## (Optional) Collect interval: (defaults to "10s").
  interval = "10s"

  ## Set true to enable election
  election = true

  ## The binPath of ipmitool
  ## (Example) bin_path = "/usr/bin/ipmitool"
  bin_path = "/usr/bin/ipmitool"

  ## (Optional) The envs of LD_LIBRARY_PATH
  ## (Example) envs = [ "LD_LIBRARY_PATH=XXXX:$LD_LIBRARY_PATH" ]

  ## The ips of ipmi servers
  ## (Example) ipmi_servers = ["192.168.1.1"]
  ipmi_servers = ["192.168.1.1"]

  ## The interfaces of ipmi servers: (defaults to []string{"lan"}).
  ## If len(ipmi_users)<len(ipmi_ips), will use ipmi_users[0].
  ## (Example) ipmi_interfaces = ["lanplus"]
  ipmi_interfaces = ["lanplus"]

  ## The users name of ipmi servers: (defaults to []string{}).
  ## If len(ipmi_users)<len(ipmi_ips), will use ipmi_users[0].
  ## (Example) ipmi_users = ["root"]
  ## (Warning!) You'd better use hex_keys, it's more secure.
  ipmi_users = ["root"]

  ## The passwords of ipmi servers: (defaults to []string{}).
  ## If len(ipmi_passwords)<len(ipmi_ips), will use ipmi_passwords[0].
  ## (Example) ipmi_passwords = ["calvin"]
  ## (Warning!) You'd better use hex_keys, it's more secure.
  ipmi_passwords = ["calvin"]

  ## (Optional) Provide the hex key for the IMPI connection: (defaults to []string{}).
  ## If len(hex_keys)<len(ipmi_ips), will use hex_keys[0].
  ## (Example) hex_keys = ["XXXX"]
  # hex_keys = []

  ## (Optional) Schema Version: (defaults to [1]).input.go
  ## If len(metric_versions)<len(ipmi_ips), will use metric_versions[0].
  ## (Example) metric_versions = [2]
  metric_versions = [2]

  ## (Optional) Exec ipmitool timeout: (defaults to "5s").
  timeout = "5s"

  ## (Optional) Ipmi server drop warning delay: (defaults to "300s").
  ## (Example) drop_warning_delay = "300s"
  drop_warning_delay = "300s"

  ## Key words of current.
  ## (Example) regexp_current = ["current"]
  regexp_current = ["current"]

  ## Key words of voltage.
  ## (Example) regexp_voltage = ["voltage"]
  regexp_voltage = ["voltage"]

  ## Key words of power.
  ## (Example) regexp_power = ["pwr","power"]
  regexp_power = ["pwr","power"]

  ## Key words of temp.
  ## (Example) regexp_temp = ["temp"]
  regexp_temp = ["temp"]

  ## Key words of fan speed.
  ## (Example) regexp_fan_speed = ["fan"]
  regexp_fan_speed = ["fan"]

  ## Key words of usage.
  ## (Example) regexp_usage = ["usage"]
  regexp_usage = ["usage"]

  ## Key words of usage.
  ## (Example) regexp_count = []
  # regexp_count = []

  ## Key words of status.
  ## (Example) regexp_status = ["fan"]
  regexp_status = ["fan"]

[inputs.ipmi.tags]
  # some_tag = "some_value"
  # more_tag = "some_other_value"

설정 후 DataKit을 다시 시작합니다.

ConfigMap을 사용한 수집기 설정 주입 또는 ENV_DATAKIT_INPUTS 설정을 통해 수집기를 활성화할 수 있습니다.

환경 변수를 사용하여 설정 매개변수를 변경할 수도 있습니다(ENV_DEFAULT_ENABLED_INPUTS에 기본 수집기로 추가해야 함).

  • ENV_INPUT_IPMI_INTERVAL

    수집 간격

    필드 유형: Duration

    수집기 설정 필드: interval

    기본값: 10s

  • ENV_INPUT_IPMI_TIMEOUT

    시간 초과

    필드 유형: Duration

    수집기 설정 필드: timeout

    기본값: 5s

  • ENV_INPUT_IPMI_DROP_WARNING_DELAY

    IPMI 서버 중단 경고 지연

    필드 유형: Duration

    수집기 설정 필드: drop_warning_delay

    기본값: 5m

  • ENV_INPUT_IPMI_BIN_PATH

    ipmitool 실행 파일 경로

    필드 유형: String

    수집기 설정 필드: bin_path

    예시: /usr/bin/ipmitool

  • ENV_INPUT_IPMI_ENVS

    LD_LIBRARY_PATH 종속 라이브러리 경로

    필드 유형: JSON

    수집기 설정 필드: envs

    예시: '["LD_LIBRARY_PATH=XXXX:$LD_LIBRARY_PATH"]'

  • ENV_INPUT_IPMI_SERVERS

    IPMI 서버 URL

    필드 유형: JSON

    수집기 설정 필드: ipmi_servers

    예시: '["192.168.1.1","192.168.1.2"]'

  • ENV_INPUT_IPMI_INTERFACES

    IPMI 서버 인터페이스 프로토콜

    필드 유형: JSON

    수집기 설정 필드: ipmi_interfaces

    예시: '["lanplus"]'

  • ENV_INPUT_IPMI_USERS

    사용자 이름

    필드 유형: JSON

    수집기 설정 필드: ipmi_users

    예시: '["root"]'

  • ENV_INPUT_IPMI_PASSWORDS

    비밀번호

    필드 유형: JSON

    수집기 설정 필드: ipmi_passwords

    예시: '["Calvin"]'

  • ENV_INPUT_IPMI_HEX_KEYS

    IPMI 연결용 16진수 키

    필드 유형: JSON

    수집기 설정 필드: hex_keys

    예시: '["50415353574F5244"]'

  • ENV_INPUT_IPMI_METRIC_VERSIONS

    메트릭 버전

    필드 유형: JSON

    수집기 설정 필드: metric_versions

    예시: '[2 or 3]'

  • ENV_INPUT_IPMI_REGEXP_CURRENT

    전류 메트릭 정규식

    필드 유형: JSON

    수집기 설정 필드: regexp_current

    예시: '["current"]'

  • ENV_INPUT_IPMI_REGEXP_VOLTAGE

    전압 메트릭 정규식

    필드 유형: JSON

    수집기 설정 필드: regexp_voltage

    예시: '["voltage"]'

  • ENV_INPUT_IPMI_REGEXP_POWER

    전력 메트릭 정규식

    필드 유형: JSON

    수집기 설정 필드: regexp_power

    예시: '["pwr","power"]'

  • ENV_INPUT_IPMI_REGEXP_TEMP

    온도 메트릭 정규식

    필드 유형: JSON

    수집기 설정 필드: regexp_temp

    예시: '["temp"]'

  • ENV_INPUT_IPMI_REGEXP_FAN_SPEED

    팬 회전 속도 메트릭 정규식

    필드 유형: JSON

    수집기 설정 필드: regexp_fan_speed

    예시: '["fan"]'

  • ENV_INPUT_IPMI_REGEXP_USAGE

    사용률 메트릭 정규식

    필드 유형: JSON

    수집기 설정 필드: regexp_usage

    예시: '["usage"]'

  • ENV_INPUT_IPMI_REGEXP_COUNT

    카운트 메트릭 정규식

    필드 유형: JSON

    수집기 설정 필드: regexp_count

    예시: '[]'

  • ENV_INPUT_IPMI_REGEXP_STATUS

    상태 메트릭 정규식

    필드 유형: JSON

    수집기 설정 필드: regexp_status

    예시: '["fan"]'

  • ENV_INPUT_IPMI_TAGS

    사용자 정의 태그입니다. 설정 파일에 같은 이름의 태그가 있으면 덮어씁니다

    필드 유형: Map

    수집기 설정 필드: tags

    예시: tag1=value1,tag2=value2

설정 안내
  • 각 매개변수 분류의 키워드는 모두 소문자로 입력하십시오
  • ipmitool -I ... 명령이 반환한 데이터를 참고하여 키워드를 적절하게 설정하십시오

메트릭

다음 데이터 수집에는 전역 선출 태그가 자동으로 추가됩니다. 필요한 경우 [inputs.ipmi.tags]에서 추가 태그를 지정할 수 있습니다.

 [inputs.ipmi.tags]
  # some_tag = "some_value"
  # more_tag = "some_other_value"
  # ...
태그 및 필드 설명
host
(tag)
모니터링 중인 IPMI 서버 호스트입니다.
unit
(tag)
모니터링 대상 호스트에서 정규화된 IPMI 센서 이름입니다.
count 설정된 IPMI 카운트 정규식과 일치하는 일반 카운트 메트릭입니다.
유형: int | (gauge)
단위: count
current IPMI 센서가 보고한 전류입니다.
유형: float | (gauge)
단위: ampere
fan_speed IPMI 센서가 보고한 팬 회전 속도입니다.
유형: int | (gauge)
단위: RPM
power_consumption IPMI 센서가 보고한 전력 소비량입니다.
유형: float | (gauge)
단위: watt
status 모니터링 대상 유닛의 숫자 상태 코드입니다.
유형: int | (gauge)
단위: N/A
temp IPMI 센서가 보고한 온도입니다.
유형: float | (gauge)
단위: temperature,C
usage IPMI 센서가 보고한 사용률입니다.
유형: float | (gauge)
단위: percent,percent
voltage IPMI 센서가 보고한 전압입니다.
유형: float | (gauge)
단위: volt
warning 모니터링 대상 유닛의 경고 상태 여부입니다. 1은 true, 0은 false입니다.
유형: int | (gauge)
단위: bool

문서 평가

이 페이지가 도움이 되었나요?