örnekler üzerinden temel SNMP
snmp desteğine sahip cihazlardan veri alınması, yorumlanması ve cihazlara ait mib ve oid değerlerinin önemi kısaca anlatmaya çalışalım. teoriye girmeden uygulamalı olarak net-snmp kullanarak alcatel omniswitchler üzerinden ufak bir iki örnek yapalım.
burada unutulmaması gereken nokta kullanacağımız cihaza ait gerekli snmp ayarlarını yapmış olmamız gerekmektedir. örneğimizde snmp adında public de tam yetkili bir kullanıcı oluşturdum. kısaca snmp ile herşey serbest durumda.
ilk önce bağlantı yapabiliyormuyuz bir deneyelim.
$ snmpwalk -v 2c -c public 10.0.0.10 system SNMPv2-MIB::sysDescr.0 = STRING: Alcatel-Lucent OS6850-U24X 6.4.4.604.R01::evenugop Service Release, October 09, 2013. SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.6486.800.1.1.2.1.7.1.10 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (2836626900) 328 days, 7:31:09.00 SNMPv2-MIB::sysContact.0 = STRING: Alcatel-Lucent, http://alcatel-lucent.com/wps/portal/enterprise SNMPv2-MIB::sysName.0 = STRING: alcatel_test_switch SNMPv2-MIB::sysLocation.0 = STRING: Unknown SNMPv2-MIB::sysServices.0 = INTEGER: 78
testimiz başarılı oldu ve cihaza ait temel bilgileri getirmiş oldu. buradan cihazımızın 6850 ve aos 6.4.4 çalıştırdığını ögrenmiş olduk.
https://service.esd.alcatel-lucent.com/portal/page/portal/EService/product_specific_support_media?p=OmniSwitch_6850___6850E
adresinden cihaza ait mib dosyasını indirebilir ve buradan ögrendiğimiz bilgilerle daha özel bilgilere artık ulaşabiliriz.
şimdi switch üzerindeki arayüzlerin durumunu ögrenelim
$ snmpwalk -v 2c -c public 10.0.0.10 1.3.6.1.2.1.2.2.1.7 IF-MIB::ifAdminStatus.1001 = INTEGER: up(1) IF-MIB::ifAdminStatus.1002 = INTEGER: down(2) IF-MIB::ifAdminStatus.1003 = INTEGER: up(1) IF-MIB::ifAdminStatus.1004 = INTEGER: up(1) IF-MIB::ifAdminStatus.1005 = INTEGER: up(1) IF-MIB::ifAdminStatus.1006 = INTEGER: up(1) IF-MIB::ifAdminStatus.1007 = INTEGER: down(2) IF-MIB::ifAdminStatus.1008 = INTEGER: down(2) IF-MIB::ifAdminStatus.1009 = INTEGER: down(2) IF-MIB::ifAdminStatus.1010 = INTEGER: up(1) IF-MIB::ifAdminStatus.1011 = INTEGER: down(2) IF-MIB::ifAdminStatus.1012 = INTEGER: down(2) IF-MIB::ifAdminStatus.1013 = INTEGER: down(2) IF-MIB::ifAdminStatus.1014 = INTEGER: down(2) IF-MIB::ifAdminStatus.1015 = INTEGER: down(2) IF-MIB::ifAdminStatus.1016 = INTEGER: down(2) IF-MIB::ifAdminStatus.1017 = INTEGER: up(1) IF-MIB::ifAdminStatus.1018 = INTEGER: down(2) IF-MIB::ifAdminStatus.1019 = INTEGER: down(2) IF-MIB::ifAdminStatus.1020 = INTEGER: down(2) IF-MIB::ifAdminStatus.1021 = INTEGER: down(2) IF-MIB::ifAdminStatus.1022 = INTEGER: down(2) IF-MIB::ifAdminStatus.1023 = INTEGER: down(2) IF-MIB::ifAdminStatus.1024 = INTEGER: down(2) IF-MIB::ifAdminStatus.1025 = INTEGER: down(2) IF-MIB::ifAdminStatus.1026 = INTEGER: down(2) IF-MIB::ifAdminStatus.1027 = INTEGER: down(2) IF-MIB::ifAdminStatus.1028 = INTEGER: down(2) IF-MIB::ifAdminStatus.13600001 = INTEGER: up(1) IF-MIB::ifAdminStatus.13604098 = INTEGER: up(1) IF-MIB::ifAdminStatus.13604099 = INTEGER: up(1) IF-MIB::ifAdminStatus.40000001 = INTEGER: up(1)
listede switch üzerindeki tüm arayüzlerin admin up/down durumları görülmektedir. bilirli bir arayüze bakmak istiyorsak : örnek olarak 4.port
$ snmpwalk -v 2c -c public 10.0.0.10 1.3.6.1.2.1.2.2.1.7.1004 IF-MIB::ifAdminStatus.1004 = INTEGER: up(1) $ snmpget -v 2c -c public 10.0.0.10 1.3.6.1.2.1.2.2.1.7.1004 IF-MIB::ifAdminStatus.1004 = INTEGER: up(1)
seçeneklerinden birini kullanacağız. aynı sorgulamayı switch üzerinden de gerçekleştirelim.
alcatel_test_switch-> show interfaces 1/4 port Legends: WTR - Wait To Restore # - WTR Timer is Running & Port is in wait-to-restore state * - Permanent Shutdown Slot/ Admin Link Violations Recovery Recovery WTR Alias Port Status Status Time Max (sec) ------+----------+---------+----------+----------+----------+----------+----------------------------------------- 1/4 enable down none 300 10 0 ""
snmpwalk ve snmpget ile durum bilgisini getirmeyi ögrendik. iki komut arasındaki en temel fark snmpget ile nokta atışı yaparken snmpwalk ile ağacın alt dallarınada bakabiliyoruz.
mevcut bir veriyi nasıl değiştireceğiz sorusunun cevabı ise snmpset komutunda yatıyor
cihaz üzerinden
alcatel_test_switch-> interfaces 1/4 admin up
komutu ile gerçekleştirdiğimiz işlem için
$ snmpset -v 2c -c public 10.0.0.10 1.3.6.1.2.1.2.2.1.7.1004 i 1 IF-MIB::ifAdminStatus.1004 = INTEGER: up(1)
aynı port için
alcatel_test_switch-> interfaces 1/4 admin down
komutu ile gerçekleştirdiğimiz işlem için
$ snmpset -v 2c -c public 10.0.0.10 1.3.6.1.2.1.2.2.1.7.1004 i 2 IF-MIB::ifAdminStatus.1004 = INTEGER: down(2)
yapısını kullanıyoruz. temelde olay bu kadar basit. snmp ile cihaz yönetimi konusunda temel mantığı uygulamalı olarak umarım anlatabilmişimdir. buradaki esas mantık cihazdaki mib yapısını iyi bilmek. bunun önemi anlamak için ufak bir örnek daha yapalım.
alcatel_test_switch-> show interfaces transceiver actual Slot/Port Temp (C) Voltage (V) Current (mA) Output (dBm) Input (dBm) ------------+----------+------------+--------------+--------------+------------- 1/1 45.0 3.317 6.626 -5.667 -Inf 1/3 42.0 3.315 6.614 -5.766 -Inf 1/10 38.0 3.318 6.424 -5.781 -Inf 1/17 44.0 3.314 16.464 17.927(AH) -7.879
test cihazımız üzerinden interfacelerin ddm özelliklerini listeleyelim. RX değerleri switch üzerinden şimdide snmp ile alalım. bunun için ddmRxOpticalPower objesine karşılık gelen değeri biliyor olmamız gerek. bu değer bu cihazda
enterprises.6486.800.1.2.1.5.1.1.2.5.1.21
1.3.6.1.4.1.6486.800.1.2.1.5.1.1.2.5.1.21
şeklinde. bu değeri ögrendikten sonra gerekli veriyi alalım.
$ snmpwalk -v 2c -c public 10.0.0.10 1.3.6.1.4.1.6486.800.1.2.1.5.1.1.2.5.1.21 SNMPv2-SMI::enterprises.6486.800.1.2.1.5.1.1.2.5.1.21.1001 = INTEGER: -2147483648 SNMPv2-SMI::enterprises.6486.800.1.2.1.5.1.1.2.5.1.21.1003 = INTEGER: -2147483648 SNMPv2-SMI::enterprises.6486.800.1.2.1.5.1.1.2.5.1.21.1010 = INTEGER: -2147483648 SNMPv2-SMI::enterprises.6486.800.1.2.1.5.1.1.2.5.1.21.1017 = INTEGER: -7879
yukarıdaki çıktıdan görüldüğü gibi dönen değerler ile cli üzerinden sorğuladığımız değerler kısmen alakalı görülüyor ancak %100 aynı değil. bu değerleri doğru şekilde yorumlayabilmek için alcatelin sayfasından indirdiğimiz mib dosyalarına ihtiyacımız olacak. bu dosyalara baktığımızda ddmRxOpticalPower objesi için aşağıdaki bilgi yer alıyor..
ddmRxOpticalPower OBJECT-TYPE SYNTAX Integer32 (-200000 | -40000..10000) UNITS "thousandth of a dBm" MAX-ACCESS read-only STATUS current DESCRIPTION "The value of ddmRxOpticalPower indicates the current Received Optical Power of the SFP/XFP in 1000s of dBm. A value of -200000 indicates this object is not applicable." ::= { ddmInfoEntry 21 }
yani bir nms uygulaması yazıyorsak elde edilen değeri 1000 e bölmemiz ve çıkan değer (-200000 | -40000..10000) dışında ise geçerli bir değer olmadığını bilmeliyiz.