문서
원본 보기10 IPMI 에이전트
개요
Zabbix에서 Intelligent Platform Management Interface (IPMI) 장치의 상태와 가용성을 모니터링할 수 있습니다. IPMI 확인을 수행하려면 Zabbix 서버가 초기에 구성되어 IPMI를 지원해야 합니다.
IPMI는 컴퓨터 시스템의 원격 "lights-out" 또는 "out-of-band" 관리를 위한 표준화된 인터페이스입니다. 운영 체제와 독립적으로 또는 시스템의 전원이 켜져 있는지와 관계없이 소위 "out-of-band" 관리 카드에서 직접 하드웨어 상태를 모니터링할 수 있습니다.
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-센서 관련 정보를 반환하는 내장 아이템 ipmi.get을 지원하며, IPMI 센서의 디스커버리에 사용할 수 있습니다.
반환 값: JSON 객체
타임아웃 및 세션 종료
IPMI 메시지 타임아웃과 재시도 횟수는 OpenIPMI 라이브러리에서 정의됩니다. OpenIPMI의 현재 설계로 인해 Zabbix에서는 인터페이스나 아이템 수준에서 이러한 값들을 구성 가능하게 만들 수 없습니다.
LAN의 IPMI 세션 비활성 타임아웃은 60 +/-3초입니다. 현재로서는 OpenIPMI를 사용하여 Activate Session 명령의 주기적 전송을 구현하는 것이 불가능합니다. Zabbix에서 특정 BMC로 세션 타임아웃으로 구성된 시간보다 더 오랫동안 IPMI 아이템 확인이 없으면, 타임아웃이 만료된 후 다음 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"는 팬 등을 의미한다고 나타냅니다. Threshold 센서는 때때로 온도, 전압, 분당 회전수와 같은 연속적인 매개변수를 측정하므로 "아날로그" 센서라고 불립니다.
다른 예로 - "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" 유형을 가집니다. Offset 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 서버나 프록시에서 종료됩니다.