SNMPTRAP의 깨진 해결 방법 (Zabbix에도 사용할 수 있음)
하고 싶은 일
일본어판 vCenter나 Windows로부터의 일본어 트랩이 깨져(↓) 하는 것의 대처.
이런 느낌(↓)으로 하고 싶다! !
환경
snmptrapd와 snmptt를 사용한 zabbix 환경
snmptrapd와 snmptt를 사용한 zabbix 환경
실현 방법
표준으로 구축하면
snmptrapd는 snmptt용 핸들러(/usr/sbin/snmptthandler)를 직접 부른다.
하지만 이번에는
snmptt 용 핸들러를 호출하기 전에 16 진수 텍스트를 바이너리로 변환합니다.
구축시 거동 확인
snmptrapd가 내뿜는 것 (샘플)
UTF8 (vCenter 및 Linux 기반) 알람 (최후의 샘플)1497051259
hostname
UDP: [192.168.10.84]:48146->[192.168.10.84]:162
.1.3.6.1.2.1.1.3.0 0:1:24:40.47
.1.3.6.1.6.3.1.1.4.1.0 .1.3.6.1.4.1.3.1.1.0.99
.1.3.6.1.4.1.8072.9999.1 "31 32 33 E6 97 A5 E6 9C AC E8 AA 9E "
.1.3.6.1.4.1.8072.9999.2 "E6 97 A5 E6 9C AC E8 AA 9E 34 35 36 E3 81 82 E3
81 82 E3 81 82 "
.1.3.6.1.4.1.8072.9999.3 "E5 AF BF E9 99 90 E7 84 A1 E3 80 81 E5 AF BF E9
99 90 E7 84 A1 E4 BA 94 E5 8A AB E3 81 AE E6 93
A6 E3 82 8A E5 88 87 E3 82 8C E6 B5 B7 E7 A0 82
E5 88 A9 E6 B0 B4 E9 AD 9A E3 81 AE E6 B0 B4 E8
A1 8C E6 9C AB E9 9B B2 E6 9D A5 E6 9C AB E9 A2
A8 E6 9D A5 E6 9C AB E9 A3 9F E3 81 86 E5 AF 9D
E3 82 8B E5 87 A6 E3 81 AB E4 BD 8F E3 82 80 E5
87 A6 E8 97 AA E3 82 89 E6 9F 91 E5 AD 90 E3 81
AE E8 97 AA E6 9F 91 E5 AD 90 E3 83 91 E3 82 A4
E3 83 9D E3 83 91 E3 82 A4 E3 83 9D E3 83 91 E3
82 A4 E3 83 9D E3 81 AE E3 82 B7 E3 83 A5 E3 83
BC E3 83 AA E3 83 B3 E3 82 AC E3 83 B3 E3 82 B7
E3 83 A5 E3 83 BC E3 83 AA E3 83 B3 E3 82 AC E3
83 B3 E3 81 AE E3 82 B0 E3 83 BC E3 83 AA E3 83
B3 E3 83 80 E3 82 A4 E3 82 B0 E3 83 BC E3 83 AA
E3 83 B3 E3 83 80 E3 82 A4 E3 81 AE E3 83 9D E3
83 B3 E3 83 9D E3 82 B3 E3 83 94 E3 83 BC E3 81
AE E3 83 9D E3 83 B3 E3 83 9D E3 82 B3 E3 83 8A
E3 83 BC E3 81 AE E9 95 B7 E4 B9 85 E5 91 BD E3
81 AE E9 95 B7 E5 8A A9 "
.1.3.6.1.6.3.18.1.3.0 192.168.10.84
.1.3.6.1.6.3.18.1.4.0 "public"
.1.3.6.1.6.3.1.1.4.3.0 .1.3.6.1.4.1.3.1.1
CP932 (Windows 형식) 알람 (어디까지나 샘플)1497027708
hostname
UDP: [192.168.10.35]:60869->[192.168.10.84]:162
.1.3.6.1.2.1.1.3.0 0:0:51:24.96
.1.3.6.1.6.3.1.1.4.1.0 .1.3.6.1.4.1.311.1.13.1.9.84.101.115.116.98.97.116.99.104.0.1
.1.3.6.1.4.1.311.1.13.1.9999.1.0 "83 70 83 89 83 81 81 5B 83 5E 81 5B 20 27 4D 65
73 73 61 67 65 20 82 CC 88 F8 90 94 82 F0 8A 6D
94 46 82 C5 82 AB 82 DC 82 B9 82 F1 81 42 88 F8
90 94 82 AA 20 6E 75 6C 6C 0D 0A "
.1.3.6.1.4.1.311.1.13.1.9999.2.0 "Unknown"
.1.3.6.1.4.1.311.1.13.1.9999.3.0 "win2016"
.1.3.6.1.4.1.311.1.13.1.9999.4.0 "1"
.1.3.6.1.4.1.311.1.13.1.9999.5.0 "1"
.1.3.6.1.4.1.311.1.13.1.9999.6.0 "83 70 83 89 83 81 81 5B 83 5E 81 5B 20 27 4D 65
73 73 61 67 65 20 82 CC 88 F8 90 94 82 F0 8A 6D
94 46 82 C5 82 AB 82 DC 82 B9 82 F1 81 42 88 F8
90 94 82 AA 20 6E 75 6C 6C "
.1.3.6.1.6.3.18.1.3.0 192.168.10.35
.1.3.6.1.6.3.18.1.4.0 "public"
.1.3.6.1.6.3.1.1.4.3.0 .1.3.6.1.4.1.311.1.13.1.9.84.101.115.116.98.97.116.99.104
snmptrapd가 내뿜는 것 (고찰)
snmptrapd가 내뿜는 것 (샘플)
UTF8 (vCenter 및 Linux 기반) 알람 (최후의 샘플)
1497051259
hostname
UDP: [192.168.10.84]:48146->[192.168.10.84]:162
.1.3.6.1.2.1.1.3.0 0:1:24:40.47
.1.3.6.1.6.3.1.1.4.1.0 .1.3.6.1.4.1.3.1.1.0.99
.1.3.6.1.4.1.8072.9999.1 "31 32 33 E6 97 A5 E6 9C AC E8 AA 9E "
.1.3.6.1.4.1.8072.9999.2 "E6 97 A5 E6 9C AC E8 AA 9E 34 35 36 E3 81 82 E3
81 82 E3 81 82 "
.1.3.6.1.4.1.8072.9999.3 "E5 AF BF E9 99 90 E7 84 A1 E3 80 81 E5 AF BF E9
99 90 E7 84 A1 E4 BA 94 E5 8A AB E3 81 AE E6 93
A6 E3 82 8A E5 88 87 E3 82 8C E6 B5 B7 E7 A0 82
E5 88 A9 E6 B0 B4 E9 AD 9A E3 81 AE E6 B0 B4 E8
A1 8C E6 9C AB E9 9B B2 E6 9D A5 E6 9C AB E9 A2
A8 E6 9D A5 E6 9C AB E9 A3 9F E3 81 86 E5 AF 9D
E3 82 8B E5 87 A6 E3 81 AB E4 BD 8F E3 82 80 E5
87 A6 E8 97 AA E3 82 89 E6 9F 91 E5 AD 90 E3 81
AE E8 97 AA E6 9F 91 E5 AD 90 E3 83 91 E3 82 A4
E3 83 9D E3 83 91 E3 82 A4 E3 83 9D E3 83 91 E3
82 A4 E3 83 9D E3 81 AE E3 82 B7 E3 83 A5 E3 83
BC E3 83 AA E3 83 B3 E3 82 AC E3 83 B3 E3 82 B7
E3 83 A5 E3 83 BC E3 83 AA E3 83 B3 E3 82 AC E3
83 B3 E3 81 AE E3 82 B0 E3 83 BC E3 83 AA E3 83
B3 E3 83 80 E3 82 A4 E3 82 B0 E3 83 BC E3 83 AA
E3 83 B3 E3 83 80 E3 82 A4 E3 81 AE E3 83 9D E3
83 B3 E3 83 9D E3 82 B3 E3 83 94 E3 83 BC E3 81
AE E3 83 9D E3 83 B3 E3 83 9D E3 82 B3 E3 83 8A
E3 83 BC E3 81 AE E9 95 B7 E4 B9 85 E5 91 BD E3
81 AE E9 95 B7 E5 8A A9 "
.1.3.6.1.6.3.18.1.3.0 192.168.10.84
.1.3.6.1.6.3.18.1.4.0 "public"
.1.3.6.1.6.3.1.1.4.3.0 .1.3.6.1.4.1.3.1.1
CP932 (Windows 형식) 알람 (어디까지나 샘플)
1497027708
hostname
UDP: [192.168.10.35]:60869->[192.168.10.84]:162
.1.3.6.1.2.1.1.3.0 0:0:51:24.96
.1.3.6.1.6.3.1.1.4.1.0 .1.3.6.1.4.1.311.1.13.1.9.84.101.115.116.98.97.116.99.104.0.1
.1.3.6.1.4.1.311.1.13.1.9999.1.0 "83 70 83 89 83 81 81 5B 83 5E 81 5B 20 27 4D 65
73 73 61 67 65 20 82 CC 88 F8 90 94 82 F0 8A 6D
94 46 82 C5 82 AB 82 DC 82 B9 82 F1 81 42 88 F8
90 94 82 AA 20 6E 75 6C 6C 0D 0A "
.1.3.6.1.4.1.311.1.13.1.9999.2.0 "Unknown"
.1.3.6.1.4.1.311.1.13.1.9999.3.0 "win2016"
.1.3.6.1.4.1.311.1.13.1.9999.4.0 "1"
.1.3.6.1.4.1.311.1.13.1.9999.5.0 "1"
.1.3.6.1.4.1.311.1.13.1.9999.6.0 "83 70 83 89 83 81 81 5B 83 5E 81 5B 20 27 4D 65
73 73 61 67 65 20 82 CC 88 F8 90 94 82 F0 8A 6D
94 46 82 C5 82 AB 82 DC 82 B9 82 F1 81 42 88 F8
90 94 82 AA 20 6E 75 6C 6C "
.1.3.6.1.6.3.18.1.3.0 192.168.10.35
.1.3.6.1.6.3.18.1.4.0 "public"
.1.3.6.1.6.3.1.1.4.3.0 .1.3.6.1.4.1.311.1.13.1.9.84.101.115.116.98.97.116.99.104
snmptrapd가 내뿜는 것 (고찰)
할 일 (세부 사항)
값 부분의 더블 쿼트(")로 둘러싸인 문자열이 패턴(2자리 16진수+공백)이면, 멀티바이트로 간주해, 바이너리 데이터(멀티바이트 문자)로 변환한다
다른 문자열은 만지지 않습니다. 또한 더블 쿼트로 둘러싸여도 패턴과 일치하지 않으면 변환하지 않습니다.
위의 일을 실현 한 프로그램을 github에 등록했습니다.
* htps : // 기주 b. 코 m / 미카시 완 / 곤 v_sn mpt 등 p_mb. 기 t
실제 절차
프로그램을 가져오다
$ git clone https://github.com/mishikawan/conv_snmptrap_mb.git
$ cp -p conv_snmptrap_mb/conv_snmptrap_mb /usr/local/bin/.
$ chmod a+x /usr/local/bin/conv_snmptrap_mb
snmptrapd.conf 설정 (1 (원하는))
다음과 같이 설정하고 snmptrapd를 restart합니다.
멀티 바이트 트랩의 OID를 알고 있다면 여기가 바람직합니다.
e.g.) 다음과 같은 사양의 경우
1. vCenter(1.3.6.1.4.1.6876.) ... UTF8
2. windows-event(1.3.6.1.4.1.311.) ...CP932
3. 그렇지 않으면 싱글 바이트 트랩
/etc/snmp/snmptrapd.conf
disableAuthorization yes
traphandle 1.3.6.1.4.1.6876.* /usr/local/bin/conv_snmptrap_mb | /usr/sbin/snmptthandler
traphandle 1.3.6.1.4.1.311.* /usr/local/bin/conv_snmptrap_mb | iconv -f cp932 | /usr/sbin/snmptthandler
traphandle default /usr/sbin/snmptthandler
snmptrapd.conf 설정 (그 2 (편리하지만 비추천))
다음과 같이 설정하고 snmptrapd를 restart합니다.
이것으로, vCenter나 UTF8로 날아 오는 트랩에도 대응할 수 있다.
어쨌든, CP932의 경우는 깨져서 모든 트랩이 내 프로그램을 통과하는 것이 무서워요.
/etc/snmp/snmptrapd.conf
disableAuthorization yes
traphandle default /usr/local/bin/conv_snmptrap_mb | /usr/sbin/snmptthandler
마지막으로
명확한 해결 방법이 인터넷에 없고 곤란했기 때문에 만들었습니다.
프로그램 짜는 사람이 아니기 때문에 코딩 센스 없지만, 내 환경에서는 문제없이 움직이고 있습니다.
사실은 Encode::Guess도 사용하고 싶었지만, trap의 OID마다 사용하는 인코딩은 사람이 판별할 수 있으므로, 설정으로 회피하고 있습니다.
Reference
이 문제에 관하여(SNMPTRAP의 깨진 해결 방법 (Zabbix에도 사용할 수 있음)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mishikawan/items/13b7d43959e703d04f54
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(SNMPTRAP의 깨진 해결 방법 (Zabbix에도 사용할 수 있음)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mishikawan/items/13b7d43959e703d04f54텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)