4가지 IPMI 검사
원본 보기4 IPMI 점검
개요
Zabbix에서 IPMI(Intelligent Platform Management Interface) 장치의 상태와 가용성을 모니터링할 수 있습니다. IPMI 점검을 수행하려면 Zabbix 서버가 먼저 IPMI 지원으로 구성되어야 합니다.
IPMI는 컴퓨터 시스템의 원격 "lights-out" 또는 "대역 외" 관리를 위한 표준화된 인터페이스입니다. 운영 체제와 독립적으로 또는 장비의 전원이 켜져 있는지 여부와 관계없이 소위 "대역 외" 관리 카드에서 직접 하드웨어 상태를 모니터링할 수 있게 해줍니다.
Zabbix IPMI 모니터링은 IPMI 지원이 있는 장치(HP iLO, DELL DRAC, IBM RSA, Sun SSP 등)에서만 작동합니다.
IPMI 관리자 프로세스는 IPMI 폴러에 의해 IPMI 점검을 스케줄링합니다. 호스트는 항상 한 번에 하나의 IPMI 폴러에 의해서만 폴링되어 BMC 컨트롤러에 대한 열린 연결 수를 줄입니다. 따라서 BMC 컨트롤러 과부하를 걱정하지 않고 IPMI 폴러 수를 늘리는 것이 안전합니다. IPMI 관리자 프로세스는 최소 하나의 IPMI 폴러가 시작될 때 자동으로 시작됩니다.
IPMI 점검에 대한 알려진 문제도 참조하세요.
설정
호스트 구성
IPMI 검사를 처리하도록 호스트를 구성해야 합니다. 해당 IP 및 포트 번호와 함께 IPMI 인터페이스를 추가하고, IPMI 인증 매개변수를 정의해야 합니다.
자세한 내용은 호스트 구성을 참조하세요.
서버 구성
기본적으로 Zabbix 서버는 IPMI 폴러를 시작하도록 구성되어 있지 않으므로, 추가된 IPMI 아이템은 작동하지 않습니다. 이를 변경하려면 root로 Zabbix 서버 구성 파일 (zabbix_server.conf)을 열고 다음 줄을 찾으세요:
# StartIPMIPollers=0
주석을 해제하고 폴러 개수를 예를 들어 3으로 설정하여 다음과 같이 만드세요:
StartIPMIPollers=3
파일을 저장하고 이후 zabbix_server를 재시작하세요.
아이템 구성
호스트 수준에서 아이템을 구성할 때:
- 유형으로 'IPMI agent'를 선택하세요
- 호스트 내에서 고유한 아이템 키를 입력하세요 (예: ipmi.fan.rpm)
- 호스트 인터페이스에서 해당하는 IPMI 인터페이스(IP 및 포트)를 선택하세요. 호스트에 IPMI 인터페이스가 존재해야 한다는 점에 유의하세요.
- 메트릭을 검색할 IPMI 센서를 지정하세요(예: Dell
Poweredge의 'FAN MOD 1A RPM'). 기본적으로 센서 ID를
지정해야 합니다. 값 앞에 접두사를 사용하는 것도 가능합니다:
id:- 센서 ID를 지정합니다;name:- 센서의 전체 이름을 지정합니다. 이는 전체 이름을 지정해야만 센서를 구별할 수 있는 상황에서 유용할 수 있습니다.
- 해당하는 정보 유형('Numeric (float)' - 이 경우; 이산 센서의 경우 - 'Numeric (unsigned)'), 단위(대부분의 경우 'rpm') 및 기타 필수 아이템 속성을 선택하세요
지원되는 점검
IPMI 에이전트는 내장 아이템 ipmi.get을 지원하며, 이는 IPMI 센서 관련 정보를 반환하고 IPMI 센서의 자동 발견에 사용할 수 있습니다.
반환 값: JSON 객체
타임아웃 및 세션 종료
IPMI 메시지 타임아웃과 재시도 횟수는 OpenIPMI 라이브러리에서 정의됩니다. OpenIPMI의 현재 설계로 인해 이러한 값들을 Zabbix에서 인터페이스나 아이템 수준에서 설정 가능하게 만들 수 없습니다.
LAN에 대한 IPMI 세션 비활성 타임아웃은 60 +/-3초입니다. 현재로서는 OpenIPMI로 Activate Session 명령의 주기적 전송을 구현할 수 없습니다. 특정 BMC에 대해 Zabbix에서 IPMI 아이템 체크가 BMC에 설정된 세션 타임아웃보다 오랫동안 없으면, 타임아웃 만료 후 다음 IPMI 체크는 개별 메시지 타임아웃, 재시도 또는 수신 오류로 인해 타임아웃됩니다. 그 후 새로운 세션이 열리고 BMC의 전체 재스캔이 시작됩니다. 새 세션을 관리하기 위해 새로운 UDP 포트가 열릴 수 있습니다. 비활성은 발신 요청과 수신 응답이 모두 없는 상태로 정의됩니다. BMC의 불필요한 재스캔을 피하려면 IPMI 아이템 폴링 간격을 BMC에 설정된 IPMI 세션 비활성 타임아웃보다 짧게 설정하는 것이 권장됩니다.
IPMI 개별 센서에 대한 참고사항
호스트에서 센서를 찾으려면 DebugLevel=4를 활성화하여 Zabbix 서버를 시작하세요. 몇 분 정도 기다린 후 Zabbix 서버 로그파일에서 센서 검색 기록을 찾으세요:
$ grep 'Added sensor' zabbix_server.log
8358:20130318:111122.170 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:7 id:'CATERR' reading_type:0x3 ('discrete_state') type:0x7 ('processor') full_name:'(r0.32.3.0).CATERR'
8358:20130318:111122.170 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:15 id:'CPU Therm Trip' reading_type:0x3 ('discrete_state') type:0x1 ('temperature') full_name:'(7.1).CPU Therm Trip'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'System Event Log' reading_type:0x6f ('sensor specific') type:0x10 ('event_logging_disabled') full_name:'(7.1).System Event Log'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'PhysicalSecurity' reading_type:0x6f ('sensor specific') type:0x5 ('physical_security') full_name:'(23.1).PhysicalSecurity'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'IPMI Watchdog' reading_type:0x6f ('sensor specific') type:0x23 ('watchdog_2') full_name:'(7.7).IPMI Watchdog'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:16 id:'Power Unit Stat' reading_type:0x6f ('sensor specific') type:0x9 ('power_unit') full_name:'(21.1).Power Unit Stat'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:16 id:'P1 Therm Ctrl %' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(3.1).P1 Therm Ctrl %'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:16 id:'P1 Therm Margin' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(3.2).P1 Therm Margin'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:13 id:'System Fan 2' reading_type:0x1 ('threshold') type:0x4 ('fan') full_name:'(29.1).System Fan 2'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:13 id:'System Fan 3' reading_type:0x1 ('threshold') type:0x4 ('fan') full_name:'(29.1).System Fan 3'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'P1 Mem Margin' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(7.6).P1 Mem Margin'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'Front Panel Temp' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(7.6).Front Panel Temp'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:15 id:'Baseboard Temp' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(7.6).Baseboard Temp'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:9 id:'BB +5.0V' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +5.0V'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'BB +3.3V STBY' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +3.3V STBY'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:9 id:'BB +3.3V' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +3.3V'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'BB +1.5V P1 DDR3' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +1.5V P1 DDR3'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'BB +1.1V P1 Vccp' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +1.1V P1 Vccp'
8358:20130318:111122.174 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'BB +1.05V PCH' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +1.05V PCH'
IPMI 센서 유형과 상태를 해독하려면 IPMI 2.0 사양서 사본을 사용할 수 있습니다 (IPMI 사양에 대한 추가 업데이트는 계획되지 않음을 참고하세요).
시작할 첫 번째 매개변수는 "reading_type"입니다. 사양서의 "Table 42-1, Event/Reading Type Code Ranges"를 사용하여 "reading_type" 코드를 해독하세요. 우리 예제의 대부분 센서는 "reading_type:0x1"을 가지고 있으며, 이는 "threshold" 센서를 의미합니다. "Table 42-3, Sensor Type Codes"는 "type:0x1"이 온도 센서, "type:0x2"는 전압 센서, "type:0x4"는 팬 등을 의미한다고 보여줍니다. 임계값 센서는 때로 온도, 전압, 분당 회전수와 같은 연속적인 매개변수를 측정하므로 "아날로그" 센서라고 불립니다.
또 다른 예 - "reading_type:0x3"을 가진 센서입니다. "Table 42-1, Event/Reading Type Code Ranges"는 읽기 유형 코드 02h-0Ch가 "Generic Discrete" 센서를 의미한다고 말합니다. 개별 센서는 최대 15개의 가능한 상태를 가집니다 (즉, 최대 15개의 의미 있는 비트). 예를 들어, "type:0x7"을 가진 'CATERR' 센서의 경우 "Table 42-3, Sensor Type Codes"는 이 유형이 "Processor"를 의미하고 개별 비트의 의미는: 00h (최하위 비트) - IERR, 01h - Thermal Trip 등임을 보여줍니다.
우리 예제에는 "reading_type:0x6f"를 가진 몇 개의 센서가 있습니다.
이러한 센서의 경우 "Table 42-1, Event/Reading Type Code Ranges"는
비트의 의미를 해독하기 위해 "Table 42-3, Sensor Type Codes"를 사용하라고 조언합니다.
예를 들어, 'Power Unit Stat' 센서는 "Power Unit"을 의미하는
"type:0x9" 유형을 가집니다. 오프셋 00h는 "PowerOff/Power Down"을 의미합니다. 즉,
최하위 비트가 1이면 서버가 전원 꺼짐 상태입니다. 이
비트를 테스트하려면 마스크 '1'과 함께 bitand 함수를
사용할 수 있습니다. 트리거 표현식은 다음과 같을 수 있습니다
bitand(last(/www.example.com/Power Unit Stat,#1),1)=1
서버 전원 꺼짐에 대해 경고하기 위해서입니다.
OpenIPMI-2.0.16, 2.0.17, 2.0.18 및 2.0.19의 이산 센서 이름에 대한 참고사항
OpenIPMI-2.0.16, 2.0.17 및 2.0.18의 이산 센서 이름은 종종
끝에 추가적인 "0" (또는 다른 숫자나 문자)이 붙습니다. 예를 들어, ipmitool과 OpenIPMI-2.0.19에서는 센서
이름을 "PhysicalSecurity" 또는 "CATERR"로 표시하지만, OpenIPMI-2.0.16, 2.0.17
및 2.0.18에서는 이름이 각각 "PhysicalSecurity0" 또는 "CATERR0"입니다.
OpenIPMI-2.0.16, 2.0.17 및 2.0.18을 사용하여 Zabbix 서버에서 IPMI 아이템을 구성할 때는 IPMI 에이전트 아이템의 IPMI sensor 필드에 "0"으로 끝나는 이름을 사용하세요. Zabbix 서버를 OpenIPMI-2.0.19 (또는 이후 버전)를 사용하는 새로운 Linux 배포판으로 업그레이드하면, 이러한 IPMI 이산 센서를 가진 아이템들은 "NOT SUPPORTED" 상태가 됩니다. 이들의 IPMI sensor 이름을 변경하고 (끝의 '0'을 제거) 다시 "Enabled" 상태로 전환될 때까지 기다려야 합니다.
임계값 및 이산 센서 동시 가용성에 대한 참고사항
일부 IPMI 에이전트는 동일한 이름으로 임계값 센서와 이산 센서를 모두 제공합니다. 항상 임계값 센서에 우선순위가 부여됩니다.
연결 종료에 대한 참고사항
IPMI 확인이 수행되지 않는 경우(모든 호스트 IPMI 항목이 비활성화/지원되지 않음, 호스트 비활성화/삭제, 호스트 유지보수 중 등 모든 이유로), IPMI 연결은 Zabbix 서버 또는 프록시가 시작된 시점에 따라 3~4시간 후에 Zabbix 서버 또는 프록시에서 종료됩니다.