<
  • Главная
Статьи

OpenNET: стаття - Основи роботи з SNMP traps (snmp monitor)

Основи роботи з SNMP traps (snmp monitor)
Ключові слова: snmp

, monitor , ( знайти схожі документи )
From: Max <max [nospam] asmi [dot] spb [dot] ru> Newsgroups: email Date: Mon, 22 Oct 2005 14:31:37 +0000 (UTC) Subject: Основи роботи з SNMP traps Оригінал: http://www.asmi.spb.ru/faq/snmp-traps-i/ SNMP traps і з чим їх їдять У цій статті я хочу висвітлити питання роботи з SNMP traps. У той час, коли я починав розбиратися з цією темою, при непоганому знанні принципів роботи протоколу SNMP, я був дивним чином переплутано результатами читання документації з цього питання, усіма цими OID, які потрібно писати як параметри для команди snmptrap. Пошуки виразної інформації в інтернет не дали результатів. Складалося враження, що я один такий нетямущий серед тих, хто вважає це елементарним. У своїй роботі я використовую пакет NetSNMP з відкритим вихідним кодом і тому, приклади відносяться саме до цього пакету. Я не буду зупинятися на описі дерева SNMP (вважаю це дійсно банальним), а почнемо з горезвісного OID. OID це просто. OID, це Object ID, унікальний ідентифікатор об'єкта в дереві значень SNMP. OID може записуватися в декількох видах. 1. Числовий. Наприклад, 1.3.6.1.4.1.2021. Найпростіший вид, через повну відсутність будь-яких трансформацій програмним забезпеченням. Саме в такому вигляді SNMP "думає". 2. Текстовий, з використанням MIB файлів. Зрозуміло, що дикі цифри OID запам'ятати категорично неможливо, тому за допомогою MIB можна вводити текстові мнемонічні імена для більш простого згадування і використання ідентифікаторів. Крім того, текстова запис дозволяє уникнути написання OID від кореня дерева SNMP. Унікальні мнемонічні імена вже містять шлях до необхідного вузла дерева. Звідси можливі записи виду enterprises.ucdavis. Так як унікальність мнемонічного імені в межах всіх можливих MIB ніхто не гарантує і не завжди відразу згадаєш до чого відноситься ім'я (наприклад prTable), існує наступна, на мій погляд найприємніша форма запису: UCD-SNMP-MIB :: prTable. В такому форматі, крім самого імені вказується ім'я MIB (можна сказати, це простір імен) Єдиним обмеженням використання MIB є те, що при використанні програмного забезпечення SNMP від ​​різних виробників і різного заліза необхідно єдине "розуміння" цих чарівних трансформацій. Тому на сайтах виробників керованого обладнання є файли опису MIB для конкретних пристроїв. З поданням OID розібралися. Тепер про трапи. Відразу обмовлюся, що все нижческазане відноситься до версії 2с SNMP. У протоколі SNMP є трапи (traps) і є Інформ (informs). Відрізняються вони тим, що трапи надсилаються на станцію менеджера без гарантії їх доставки, а Інформ гарантовано доставляються. Ну, або не доставляє, але тоді відправник про це дізнається. Для простоти, я і те й інше називаю трапом. Так нам буде простіше. Вибачте за тимчасові незручності надсилається менеджеру в трапі (Інформ)? А надсилаються наступні дані: * Uptime пристрої у вигляді пари: стандартний OID uptime, значення * OID, який говорить про те, що за подія сталося. У MIB файлах є спеціальні опису деякої кількості стандартних подій, на кшталт запуску або зупинки агента. Також, ми можемо визначити власні trap OIDs і навіть описати їх у власному MIB файлі. * Будь-які пари OID і його значення (там ще є і третє поле "тип значення", але це нам побоку), які можуть дати додаткову інформацію. Наприклад, коли свитч посилає трап "Падіння линка", додаткове поле буде містити інформацію OID інтерфейсу, з яким трапилася неприємність - IF-MIB: ifIndex.2. Тепер, наша розповідь розділяється на напрямки. Перший напрямок: "Як нам послати SNMP trap ручками з командного рядка". Друге напрямку "Як нам змусити агента SNMP посилати трапи коли що щось іде не за планом". Надсилаємо руками Припустимо, нам хочеться послати повідомлення менеджеру про те, що демон net-snmpd запустився і передати додаткову інформацію про розмір swap файлу і всі це ручками ??? Ну прийшла нам така забаганка. Припустимо. Пишемо: snmpinform -c public -v 2c host.sample.com "" ucdavis.ucdTraps.ucdStart memTotalSwap i 1024000 Що тут що? * "" - брати uptime по дефолту * ucdavis.ucdTraps.ucdStart - послати цей трап * memTotalSwap i 1024000 - додати в навантаження OID memTotalSwap рівне цілому 1024000 І якщо на цільовому хості запущений демон snmptrapd, то в балці з'явиться повідомлення про прихід трапа. Однак, іноді хочеться дивного, наприклад послати трап про те, що інопланетяни тирять SCSI вінчестери прямо з кошика або про те, що серверну заливає водою, про що вас попереджувально сповістив саморобний датчик, які важить на COM порту. Ясна річ, в стандартних MIB про таких дивних ситуаціях не згадується. Тому, можна використовувати довільну послідовність ціфірек для позначення нового в світі події. Наприклад: snmptrap -c public -v 2c 127.0.0.1 "" 1.3.3.3.3.3.3.3 1.2.2.2.2.2.2 s "Aliens opened the door" І що характерно, це буде працювати. У балці з'явиться така Бредятинка: Nov 22 14:08:24 snmptrapd [465]: localhost [127.0.0.1]: Trap, DISMAN-EVENT-MIB :: sysUpTimeInstance = Timeticks: (736247) 2: 02: 42.47, SNMPv2-MIB :: snmpTrapOID.0 = OID: SNMPv2-SMI :: org.3.3.3.3.3.3, iso.2.2.2.2.2.2 = STRING: "Aliens opened the door" У той же час, круті адміністратори повинні все робити правильно, самодокументіруемо , відповідно до вимог IETF і інших компетентних організацій. Тому, будемо описувати наші нові OID в своєму власному MIB файлі. ALLIENSATTACK-MIB DEFINITIONS :: = BEGIN IMPORTS OBJECT-TYPE, NOTIFICATION-TYPE, MODULE-IDENTITY, Integer32, Opaque, enterprises, Counter32 FROM SNMPv2-SMI alliensattack MODULE-IDENTITY LAST-UPDATED "200209050000Z" ORGANIZATION "XCom" CONTACT-INFO " Planet Earth "DESCRIPTION" MIB for preventing aliens to stole our SCSI disks ":: = {enterprises 10050} attackTraps OBJECT IDENTIFIER :: = {alliensattack 1} attackStartTrap NOTIFICATION-TYPE STATUS current DESCRIPTION" Notify about start of attack ":: = { attackTraps 1} attackStopTrap NOTIFICATION-TYPE STATUS current DESCRIPTION "Notify about time to leave our hideouts" :: = {attackTraps 2} attackSource OBJECT IDENTIFIER :: = {aliensattack 2} attackFromDoors OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "Sent to manager when attack starts from doors" :: = {attackSource 1} attackFromWindows OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "May be alliens are innocent? And S CSI drives disappeared in the Gates? " :: = {attackSource 2} END Тут визначається enterptise з номером 10050 і йому даеся ім'я aliensattack. Після цього вводяться дві гілки: одна для трапів (початок і кінець атаки), інша для OID додаткової інформації (атака через двері або це зовсім не інопланетяни). Скажу чесно, в форматі MIB файлу я розумію мало. Тому уважно вивчивши MIB файли зі стандартної поставки net-snmp, я зробив цей приклад який працює, але кришталевої ясності у всіх його ключових словах я не досяг. Далі! Укладаємо цей файл з ім'ям ALLIENSATTACK-MIB.txt в який-небудь каталог ближче і запам'ятовуємо, що з цього моменту всі програми мають відношення до SNMP (snmpd, snmptrapd, snmpinform) ми запускаємо з підтримкою цього MIB. Тобто, до командного рядка додаємо параметри -М каталог / с_файлом -m + ALLIENSATTACK-MIB. Знак "+" перед ім'ям MIB (не файл з MIB, а саме ім'я MIB), значить, що MIB буде додано до завантажуваних за замовчуванням. Надсилаємо автоматично Спосіб # 2. Пишемо скрипт, який перевіряє системні параметри і посилає трап на станцію менеджера. Пишеться на shell, perl або на будь-яке відоме мовою. Спосіб # 1. Найцікавіший. У 5-й версії net-snmp появіласть підтримка модуля DISMAN-EVENT-MIB котрий вміє відсилати повідомлення за деяких умов. Але це вже інша історія.

Обговорення [ RSS ]

  • 1.1 , Renat (??), 11:42, 03/11/2005 [ відповісти ]
+

/ - /   -   > Складалося враження, що я один такий   > Нетямущий серед тих, хто вважає це   > Елементарним > Складалося враження, що я один такий
> Нетямущий серед тих, хто вважає це
> Елементарним.

У мене таке ж відчуття. Переді мною стоїть завдання написати агента для нашого девайса, який би реалізовував MIB. Так ось хоч убий не як не можу розібратися в якому місці і в який момент потрібно оновлювати таблиці, що б за запитом видавалися актуальні значення.
Величезне прохання до автора, що б продовжив цикл статей про SNMP.

  • 1.4 , vare6gin (?), 9:14, 18/08/2011 [ відповісти ]
+

/ - /   -   ВЕЛИКЕ ВАМ СПАСИБІ ВЕЛИКЕ ВАМ СПАСИБІ!

Я вже думав, що зі мною щось не так ...


Додати коментар

Спонсори:

Хостинг:



Вибачте за тимчасові незручності надсилається менеджеру в трапі (Інформ)?
UcdStart memTotalSwap i 1024000 Що тут що?
And S CSI drives disappeared in the Gates?


Новости
  • Виртуальный хостинг

    Виртуальный хостинг. Возможности сервера распределяются в равной мере между всеми... 
    Читать полностью

  • Редизайн сайта

    Редизайн сайта – это полное либо частичное обновление дизайна существующего сайта.... 
    Читать полностью

  • Консалтинг, услуги контент-менеджера

    Сопровождение любых интернет ресурсов;- Знание HTML и CSS- Поиск и обновление контента;-... 
    Читать полностью

  • Трафик из соцсетей

    Сравнительно дешевый способ по сравнению с поисковым и контекстным видами раскрутки... 
    Читать полностью

  • Поисковая оптимизация

    Поисковая оптимизация (англ. search engine optimization, SEO) — поднятие позиций сайта в результатах... 
    Читать полностью