Skip to content

ö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.

Back To Top