SNMP를 사용하여 호스트 및 dom0 리소스 모니터링
참고:
SNMP 기능은 XenServer Premium 또는 Trial Edition 고객에게 제공됩니다. XenServer 라이선스에 대한 자세한 내용은 라이선스를 참조하십시오. 업그레이드하거나 XenServer 라이선스를 얻으려면 XenServer 웹사이트를 방문하십시오.
풀 관리자 역할을 통해 SNMP를 사용하여 XenServer® 호스트 및 호스트의 제어 도메인인 dom0이 소비하는 리소스를 원격으로 모니터링할 수 있습니다. 네트워크 관리 시스템(NMS)이라고도 하는 SNMP 관리자는 XenServer 호스트에서 실행되는 SNMP 에이전트에 쿼리 요청을 보냅니다. SNMP 에이전트는 다양한 메트릭에서 수집된 데이터를 NMS로 다시 전송하여 이러한 쿼리 요청에 응답합니다. 수집할 수 있는 데이터는 관리 정보 기반(MIB)이라는 텍스트 파일의 개체 식별자(OID)로 정의됩니다. OID는 CPU 또는 메모리 사용량과 같은 네트워크 장치에 대한 측정 가능한 특정 정보를 나타냅니다.
또한 XenServer에서 특정 이벤트가 발생했음을 NMS에 알리는 에이전트 시작 메시지인 트랩을 구성할 수 있습니다. 쿼리 요청과 트랩 모두 XenServer 풀의 상태를 모니터링하는 데 사용할 수 있습니다. 이들은 메트릭 및 트랩 개체로 정의되며 XenServer 다운로드 페이지에서 다운로드할 수 있는 MIB 파일 XENSERVER-MIB.txt의 OID로 식별됩니다. 다음 표는 이러한 메트릭 및 트랩 개체에 대한 정보를 제공합니다.
메트릭 개체
다음 표에 나열된 메트릭을 사용하여 XenServer 호스트에 대한 특정 정보를 요청할 수 있습니다. 이러한 메트릭은 SNMP 관리자가 SNMP 에이전트에 쿼리 요청을 보낼 때 사용되므로 NMS에서 이 데이터를 볼 수 있습니다.
NMS 또는 xe CLI에서 이러한 메트릭 개체에서 반환된 데이터를 볼 수 있습니다. xe CLI에서 메트릭 개체를 쿼리하려면 host-data-source-query 또는 vm-data-source-query를 실행하고 RRDD 데이터 소스를 data-source 매개변수의 값으로 제공하십시오. 예:
xe host-data-source-query data-source=cpu_avg host=<host UUID>
<!--NeedCopy-->
참고:
기본적으로 NMS는 포트 161을 사용하여 SNMP 에이전트에 OID 쿼리 요청을 보냅니다.
| 개체 식별자(OID) | RRDD 데이터 소스 | 반환된 데이터 | 유형 |
|---|---|---|---|
| 1.3.6.1.4.1.60953.1.1.1.1 | memory |
Dom0 총 메모리(MB) | 부호 없는 32비트 정수 |
| 1.3.6.1.4.1.60953.1.1.1.2 | memory_internal_free |
Dom0 사용 가능한 메모리(MB) | 부호 없는 32비트 정수 |
| 1.3.6.1.4.1.60953.1.1.1.3 | cpu_usage |
Dom0 CPU 사용량(백분율) | 부동 소수점 |
| 1.3.6.1.4.1.60953.1.1.1.4 | memory_total_kib |
호스트 총 메모리(MB) | 부호 없는 32비트 정수 |
| 1.3.6.1.4.1.60953.1.1.1.5 | memory_free_kib |
호스트 여유 메모리(MB) | 부호 없는 32비트 정수 |
| 1.3.6.1.4.1.60953.1.1.1.6 | cpu_avg |
호스트 CPU 사용량(백분율) | 부동 소수점 |
| 1.3.6.1.4.1.60953.1.1.1.7 | (참고 1 참조) | pCPUs의 총 개수 | 부호 없는 32비트 정수 |
| 1.3.6.1.4.1.60953.1.1.1.8 | running_vcpus |
실행 중인 vCPU 수 | 부호 없는 32비트 |
| 1.3.6.1.4.1.60953.1.1.1.9 | running_domains |
실행 중인 VM 수 | 부호 없는 32비트 |
참고:
pCPU의 이름은
cpu형식 뒤에 숫자가 붙습니다. xe CLI에서 pCPU 수를 쿼리하려면 다음 명령을 실행하십시오.
xe host-data-source-list host=<host UUID> | grep -E 'cpu[0-9]+$'이는 정규 표현식
cpu[0-9]+과 일치하는 CPU 메트릭 목록을 반환합니다.
트랩
트랩은 특정 이벤트가 발생할 때 SNMP 관리자에게 알리기 위해 SNMP 에이전트가 보내는 경고로, XenServer 호스트를 모니터링하고 문제를 조기에 식별할 수 있도록 합니다. 제한에 도달했을 때(예: 호스트 CPU 사용량이 너무 높은 경우) 트랩을 생성하도록 SNMP 설정을 구성할 수 있습니다. 트랩이 생성되면 NMS로 전송되며, 다음 필드가 트랩 개체의 일부로 반환됩니다.
참고:
기본적으로 풀 코디네이터 호스트의 SNMP 에이전트는 UDP 포트 162를 사용하여 NMS로 트랩을 보냅니다.
| 개체 식별자 (OID) | 필드 이름 | 유형 | 상세 설명 |
|---|---|---|---|
| 1.3.6.1.4.1.60953.1.10.1.1 | operation |
문자열 | 다음 값 중 하나일 수 있습니다: add 또는 del. 트랩이 XenServer에 의해 생성되어 NMS로 전송되는 경우(XenCenter에서도 경고가 생성됨) operation는 add이고, 경고가 파괴되는 경우(예: 경고를 해제하는 경우) del입니다. |
| 1.3.6.1.4.1.60953.1.10.1.2 | ref |
문자열 | 트랩 개체에 대한 참조입니다. |
| 1.3.6.1.4.1.60953.1.10.1.3 | uuid |
문자열 | 트랩 개체의 UUID입니다. |
| 1.3.6.1.4.1.60953.1.10.1.4 | name |
문자열 | 트랩 객체의 이름입니다. |
| 1.3.6.1.4.1.60953.1.10.1.5 | priority |
정수 | 트랩의 심각도입니다. 다음 값 중 하나일 수 있습니다: 1: 심각, 2: 주요, 3: 경고, 4: 사소, 5: 정보, others: 알 수 없음. |
| 1.3.6.1.4.1.60953.1.10.1.6 | class |
문자열 | 생성된 트랩의 범주입니다. 다음 값 중 하나일 수 있습니다: VM, Host, SR, Pool, VMPP, VMSS, PVS_proxy, VDI, 또는 Certificate. |
| 1.3.6.1.4.1.60953.1.10.1.7 | obj-uuid |
문자열 | 필드 class의 다양한 클래스에 대한 xapi 객체 UUID입니다. |
| 1.3.6.1.4.1.60953.1.10.1.8 | timestamp |
문자열 | 트랩이 생성된 시간입니다. |
| 1.3.6.1.4.1.60953.1.10.1.9 | body |
문자열 | 필드 name에 대한 자세한 정보입니다. |
선행 조건
-
풀의 모든 호스트는 동일한 XenServer 버전을 실행해야 하며, 이 버전에는 SNMP 플러그인이 포함되어야 합니다.
참고:
XenCenter®에서 SNMP 탭이 보이지 않는 경우, 호스트 또는 풀의 구성원이 SNMP를 지원하는 XenServer 버전을 실행하고 있지 않기 때문일 수 있습니다. 호스트 또는 풀을 최신 XenServer 버전으로 업데이트하십시오.
-
사용 중인 NMS는 SNMPv2c 또는 SNMPv3를 지원해야 합니다.
-
NMS와 XenServer는 네트워크로 연결되어야 합니다.
제약 조건
- 전체 풀 또는 풀에 속하지 않은 독립 실행형 호스트에 대한 SNMP 설정을 구성할 수 있습니다. 현재 풀 내 개별 호스트에 대한 SNMP 설정은 구성할 수 없습니다.
-
SNMP가 이미 활성화되고 구성된 풀에 호스트를 추가하는 경우, XenCenter는 풀의 SNMP 설정을 새 호스트에 자동으로 적용하지 않습니다. 새 호스트를 추가한 후 풀에서 SNMP 설정을 재구성하거나, 새 호스트를 풀에 추가하기 전에 동일한 SNMP 설정으로 구성해야 합니다.
참고:
새 호스트를 추가한 후 풀에서 SNMP 설정을 재구성할 때, 호스트가 실행 중이며 유지 관리 모드가 아닌지 확인하십시오.
-
Citrix Hypervisor 8.2 CU1에서 XenServer 8.4로 롤링 풀 업그레이드를 수행하거나 XenServer 호스트 및 풀에 업데이트를 적용하기 전에, 이전에 수동으로 수정했으며 필요한 경우 다음 구성 파일을 백업하십시오.
/etc/snmp/snmpd.xs.conf/etc/sysconfig/snmp/var/lib/net-snmp/snmpd.conf
- SNMP 에이전트가 오프라인이면 트랩이 생성될 수 없습니다. 예를 들어, SNMP 에이전트가 다시 시작되거나 풀 코디네이터가 재부팅되거나 재지정되는 경우입니다.
xe CLI를 사용하여 SNMP 구성
xe CLI 또는 XenCenter를 사용하여 SNMP를 구성할 수 있습니다. XenCenter를 사용하여 SNMP를 구성하는 방법에 대한 자세한 내용은 SNMP를 사용하여 호스트 및 dom0 리소스 모니터링을 참조하십시오.
result 개체
SNMP를 구성할 때 모든 응답은 JSON 형식으로 반환됩니다. 명령이 성공적으로 실행되면 키-값 쌍 "code": 0을 반환합니다. 일부 명령(예: get-config 명령)은 result이라는 중첩된 JSON 개체를 반환합니다. result JSON 개체는 SNMP 구성을 업데이트하는 데 사용되는 set-config 명령에도 필요합니다.
result JSON 개체는 다음 개체 common, agent 및 nmss로 구성됩니다.
common
| 필드 | 허용되는 값 | 기본 설정 값 |
|---|---|---|
enabled |
no (SNMP 서비스 비활성화) 또는 yes (SNMP 서비스 활성화) |
no |
debug_log |
no (디버그 로깅 비활성화) 또는 yes (디버그 로깅 활성화) |
no |
max_nmss |
해당 없음 (이 필드는 읽기 전용이며 지원되는 최대 NMS 수를 지정합니다) | 1 |
agent
| 필드 | 허용되는 값 | 기본 값 |
|---|---|---|
v2c |
no (SNMPv2c 기능을 비활성화) 또는 yes (SNMPv2c 기능을 활성화) |
yes |
community |
일반 문자열 유형 (참고 1 참조) | public |
v3 |
no (v3 비활성화) 또는 yes (v3 활성화) |
no |
user_name |
일반 문자열 유형 (참고 1 참조) | |
authentication_password |
COMMON_STRING_TYPE (길이가 8 이상이어야 합니다. 참고 1을 참조하십시오.) | |
authentication_protocol |
MD5 또는 SHA
|
|
privacy_password |
COMMON_STRING_TYPE (길이가 8 이상이어야 합니다. 참고 1을 참조하십시오.) | |
privacy_protocol |
DES 또는 AES
|
|
engine_id |
해당 없음 (이 필드는 읽기 전용이며 SNMP 에이전트가 처음 시작될 때 생성됩니다) |
nmss
| 필드 | 허용되는 값 | 기본 값 |
|---|---|---|
uuid |
NMS UUID (NMS 트랩 수신기를 구성할 때 설정하며, 이 값은 풀의 모든 호스트에서 일관되어야 합니다) | |
address |
NMS IPv4 주소 또는 호스트 이름 (FQDN) | |
port |
1 ~ 65535
|
162 |
v2c |
no (SNMPv2c 비활성화), yes (SNMPv2c 활성화), 또는 SNMPv2c 또는 v3 중 하나를 지원합니다. |
yes |
community |
일반 문자열 유형 (참고 1 참조) | public |
v3 |
no (v3 비활성화), yes (v3 활성화), 또는 SNMPv2c 또는 SNMPv3 중 하나를 지원합니다. |
no |
user_name |
일반 문자열 유형 (참고 1 참조) | |
authentication_password |
COMMON_STRING_TYPE 여기서 길이는 8 이상 (참고 1 참조) | |
authentication_protocol |
MD5 또는 SHA
|
|
privacy_password |
COMMON_STRING_TYPE 여기서 길이는 8 이상 (참고 1 참조) | |
privacy_protocol |
DES 또는 AES
|
참고:
- COMMON_STRING_TYPE은(는) 다음 요구 사항을 충족하는 문자열을 나타냅니다:
- 문자, 숫자, 하이픈(-), 마침표(.), 파운드(#), 앳(@), 등호(=), 콜론(:) 또는 밑줄(_) 문자의 모든 조합.
- 길이는 6에서 32 사이 (포함).
- XenServer의 어떤 구성 파일에도 암호가 일반 텍스트로 저장되지 않습니다. 암호는 지역화된 키로 변환되어 저장됩니다.
get-config명령은 암호를 별표(*)로 구성된 숨겨진 상수로 표시합니다.
SNMP 서비스 구성
SNMP 서비스 상태 확인:
xe host-call-plugin host-uuid=<host-uuid> plugin=snmp fn=status
<!--NeedCopy-->
SNMP 서비스를 시작, 중지 또는 다시 시작:
xe host-call-plugin host-uuid=<host-uuid> plugin=snmp fn=<operation>
<!--NeedCopy-->
여기서 operation은 start, stop 또는 restart입니다.
SNMP 구성 세부 정보 가져오기:
xe host-call-plugin host-uuid=<host-uuid> plugin=snmp fn=get-config
<!--NeedCopy-->
성공하면 이 명령은 키-값 쌍 "code": 0과 SNMP 서비스의 구성 세부 정보를 포함하는 result JSON 객체를 반환합니다. 예시:
"code": 0,
"result": {
"common": {
"enabled": "no",
"debug_log": "no",
"max_nmss": 1
},
"agent": {
"v2c": "yes",
"v3": "no",
"community": "public",
"user_name": "",
"authentication_password": "",
"authentication_protocol": "",
"privacy_password": "",
"privacy_protocol": "",
"engine_id": "<engine_id>"
},
"nmss": []
}
<!--NeedCopy-->
result JSON 객체를 선호하는 텍스트 편집기로 복사하고 파일에서 모든 줄 바꿈(\n) 문자를 제거합니다. 필드를 SNMP 구성 세부 정보로 업데이트합니다. NMS 설명서를 참조하고 nmss 객체에 필요한 필드에 대한 값을 지정하여 NMS를 구성합니다. 자세한 내용은 위에 나열된 객체를 참조하십시오.
SNMP 서비스를 구성하려면 set-config 명령을 실행하고 편집된 result JSON 객체를 args:config 매개변수의 매개변수 값으로 제공합니다.
SNMP 구성 설정:
xe host-call-plugin host-uuid=<host-uuid> plugin=snmp fn=set-config args:config='<result>'
<!--NeedCopy-->
여기서 result는 복사하고 편집한 get-config 명령에서 반환된 result JSON 객체입니다.
참고:
전체 풀에 대해 SNMP를 구성하려면 풀의 각 호스트에 대해
set-config명령을 실행해야 합니다.
구성 변경이 성공하면 명령은 키-값 쌍 "code": 0을 반환합니다. 구성 변경이 실패하면 set-config 명령은 오류가 발생했음을 나타내는 다음 키-값 쌍 중 하나를 반환합니다.
-
"code": 1: 일반적인 오류 문자열입니다. 예를 들어, 알 수 없는 예외입니다. -
"code": 2: 오류 문자열 (매개변수가 누락됨). -
"code": 3:message객체를 각 요소가[field_path, key, value, error string]형식인 목록으로 반환합니다.
또한 지정된 트랩 수신기 정보가 올바른지 확인하기 위해 NMS로 테스트 SNMP 트랩을 보낼 수 있습니다.
테스트 SNMP 트랩 보내기:
xe host-call-plugin host-uuid=<host-uuid> plugin=snmp fn=send-test-trap args:config='{"nmss":[{"uuid":"<uuid>","address":"<address>","port":162,"v2c":"yes","v3":"no","community":"public","user_name":"<user_name>","authentication_password":"<authentication_password>","authentication_protocol":"<authentication_protocol>","privacy_password":"<privacy_password>","privacy_protocol":"<privacy_protocol>"}]}'
<!--NeedCopy-->
이 명령은 TEST_TRAP의 msg_name 및 This is a test trap from XenServer pool "<pool name>" to verify the NMS Trap Receiver configuration.의 msg_body와 함께 NMS로 테스트 트랩을 보냅니다.
테스트 트랩을 받지 못하면 SNMP 구성을 다시 확인하십시오. 실패한 경우, send-test-trap 명령은 오류가 발생했음을 나타내는 다음 키-값 쌍 중 하나를 반환합니다.
-
"code": 1: 일반적인 오류 문자열입니다. 예를 들어, 알 수 없는 예외입니다. -
"code": 2: 오류 문자열 (매개변수가 누락되었습니다). -
"code": 3: 각 요소가[field_path, key, value, error string]형식인 목록으로message개체를 반환합니다. -
"code": 4: 각 요소가[nms address, nms port, error string]형식인 목록으로message개체를 반환합니다.